学习笔记(java编程思想)

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可以自动扩充自身尺寸的数组








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值