概述
1:
创建对象解析
对于用new 创建一个对象,我们需要弄清楚它的过程:
引用和创建一个对象的格式是:
类名 变量名;
变量名=new 类名(参数列表);
比如 Vehicle veh1=new Vehicle();
这个语句具体的执行过程是:
1.右边的“new vheicle"是以vehicle类为模板,在堆空间里创建一个vehicle类对象(也简称vehicle对象)。
2.末尾的()意味着,在对象创建后,立即调用vehicle类的构造函数,对刚生成的对象进行初始化。构造函数肯定是有的,如果没有创建,Java会补上一个默认的构造函数。
3.左边的'Vehicle veh1'创建了一个vehicle类引用变量
4.“=”操作符使对象引用指向刚创建的Vehicle对象。
将上面的语句分为两个步骤:
Vechicle veh1;
veh1=new Vechicle;
这样写,就比较清楚了,有两个实体:一是对象引用变量,一是对象本身。在堆空间里创建的实体,与在栈空间里创建的实体不同。尽管它们也是确确实实存在的实体,但是似乎很难准确的“抓”住它。
2:
方法的重载,每个重载的方法都必须有一个独一无二的形参列表,返回值不能区分方法的重载。有时候调用函数不在乎返回值,在乎的是其中的过程,无法区分重载方法。
如:
public int A(int i);
public double A(int i);
这2个方法不能构成重载,会有编译错误。
而:
public int A(int i):
public double A(double i);
这2个方法可以形成重载
3:
static方法中不能调用非静态方法,非静态方法可以调用静态方法,static方法没有this的方法,static方法的主要用途是不用创建对象直接从类中调用static方法,java禁止全局方法,但在类中植入static方法可以访问其他static方法和static域。
4:
类的访问权限,一个java文件中只能有一个public 类,类的名称必须与这个文件名一致
package DAY1;
//此处给day1类加pribate、protected都是错误的 如果希望其他任何人对该类有访问权限可以吧构造类指定为private
public class day1 {
public static void main(String[] args) {
}
}
//此处给test类加pribate、public、protected都是错误的
//错误提示:Illegal modifier for the class test; only public, abstract & final are permitted
class test{
}
package adg;
public class Soup1 {
//可以用静态方法来创建Soup1类
private Soup1 () {
}
public static Soup1 makeSoup(){
return new Soup1();
}
}
5:
组合就是在类中调用类
继承和初始化
继承初始化导出类的时候 先执行基类的默认构造函数 再执行导出类的构造函数
在导出类的构造函数中可以用super(参数)的方法调用基类的构造函数
顺序one:构造函数不存在重写方法的时候(p159)
调用基类构造器,按声明顺序初始化方法,调用导出类构造器
顺序two:构造器调用重写方法(p163)
先分配给对象存储空间初始化成二进制的零,调用复写的构造器中的draw()方法,按照声明顺序调用成员初始化方法,调用导出类的构造主体
6:
final 定义基本数据类型的时候 表示这个数不能改变,在编译期实行。
定义引用的时候表示指向的地址不能改变,无法再次指向另一个地址
允许空白final 但是在使用前必须赋值
final方法 原因是把方法锁定,防止继承类修改覆盖他的含义
如果试图覆盖一个private方法 是被允许的,这是生成了一个新的方法
final类 表明了不打算继承该类
7:
多态就是创建一个基类的引用,可以把任意它子类的对象动态绑定指向这个引用。
如果用向上造型建一个类 Shape sh = new Circle(); sh.test();如果导出类覆盖了基类的test方法调用重写方法,如果没有重写方法就用基类test方法,没有重写的情况下这个sh对象只能用基类方法,基类的属性,就不能调用新方法。一般想调用新方法就不用向上造型,用向下造型。向上造型容易丢失导出类的信息,但是安全的,因为基类不会具有大于导出类的接口,向下造型容易产生类型转换错误,不安全。
如果方法是静态的,他的行为就不具备多态重写不重写,都是调用基类的static方法,或者调用导出类的重写非static方法
构造器不具有多态性,但是构造器中的方法会跟重写方法有冲突,详细看4
8:
抽象类abstract extends:包含抽象方法的类是抽象类,可以有定义的方法,不能创建对象,如果从一个抽象类继承,并想创建该类的对象,那就必须为基类所有的抽象方法提供方法定义。
接口interface implements:产生一个完全抽象的类,不提供任何具体表现的类,接口不仅仅是极度抽象的类,它允许通过创建一个能被向上转型为多种基类的类型,实现某种多重继变种的特性。接口属性是默认是 public static final 的不写也这个意思,方法是public abstract。
继承只能继承一个,接口实现可以好几个。
实用接口核心:1为了能够向上造型为多个基类型,防止创建对象并确保仅仅建立一个接口,如果知道某事物应该是一个基类首先想到的是接口。
接口常见用法 策略设计模式,接口与工厂。
接口中定义的属性不能是空final,但可以使被非常亮表达式初始化,既然属性是static他们就可以在类第一次被加载时初始化,发生在属性首次被访问时候,并且值放在该接口的静态存储区域内。
9:
容器基本类型是List,Set,Queue,Map集合类。
ArrayList可以自动扩充自身尺寸的数组
最后
以上就是悲凉黑猫为你收集整理的学习笔记(java编程思想)的全部内容,希望文章能够帮你解决学习笔记(java编程思想)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复