第三周总结

星期一:

1. 成员变量和局部变量的区别:
    位置不同(成员在类中方法外,局部在方法定义中或方法声明上)
    内存位置不同(成员在堆内存中,与对象有关系)(局部在栈内存中,与方法有关系)
    生命周期不同(成员随着对象的创建而存在,随着对象的创建完毕等待jvm的垃圾回收器空闲的时候回收而消失)
           (局部随着方法的调用而存在,随着调用结束而消失)
    初始化不同(成员可以不初始化,通过对象名来赋值,默认null,0)
         (局部必须在使用之前初始化)
    如果一个类能够描述这个事物的属性,必须定义为成员变量,否则定义为局部变量
2. this的引入
    创建具体的事物: 类名 对象名 = new 类名( ) ;  如Student s = new Student
    在给私有的成员变量赋值时:public void setName(Spring n ){  name = n  ;}
    为了区分成员和局部变量,加入this关键字: this.成员变量名 = 局部变量名 ;
3. 通过公共方法访问成员变量
    类名.set方法名(变量名)  =  cfx.setLong(l) ; 
4. 方法中的形参如果是基本类型,调用方法的时候,实际参数 传递对应数据值即可::类名 对象名(随便起) = new 类名() ;  之后传递数值: 数据类型 变量名 = 对象名.方法名(进行赋值,如a:5,b:8) ;最后输出System.out.println("结果是"+变量名) ;
   方法中的形参是引用类型的话(数组,类,接口) ,实际参数在进行传递的时候需要传递当前(数组,类,接口)的对象,创建对象的方法是:类名 对象名(自定义的) = new 类名() ;  最后输出:类对象名.此类中的方法名(另外一个类对象的对象名) ;

5. 匿名对象:是指没有名字的对象,格式为:new 类名() ; 调用方法的格式为:new 类名().成员方法名(); 好处是节省内存空间,因为它没有栈内存指向,使用完毕后会被jvm的垃圾回收器回收,一般使用一次即可,sd.method (new student()); 也可以当做参数传递

6. 构造方法:是一个特殊的方法,方法名与类名相同,没有void,可以被重载,分为无参构造方法和有参构造方法,目的是为了类的成员数据进行初始化,如果类中没有构造方法,系统默认提供无参,如果有有参系统就不会提供无参,但此时系统会报错,需要手动加上无参,也就是说无参必须存在,有参可以视情况而定, 无参赋值:----new一个类对象----对象名.set成员变量名 = (进行赋值)----进行语句输出,  有参赋值: 类名 对象名 = new 类名(name:"某某", age:18, sex:"女") ;----输出语句

7.一个类的标准写法:成员变量私有化, 提供对外的公共访问方法(setxxx/getxxx), 提供无参/有参构造方法 

星期二:

1. static: 一个关键字,意为共有共享的, 如static String 国家 = 中国; 在语句输出时只需要填写一次,之后的带有这个变量的语句中都会出现"中国", 特点是,随着类的加载而加载,优先于对象存在, 不能与this共存, 可以被多个对象共享共用,也就是将某个属性定义为静态, 被修饰的成员方法和成员变量也被称为静态方法和静态变量,可以使用对象名来访问(对象名.变量名), 也可以用类名来访问(类名.变量名), 适用范围: 静态方法中只能访问静态变量,只能调用静态方法,(main方法是静态的,因此不能在main方法中访问别的非静态方法中的成员,除非给此方法加static变成静态方法) , 非静态方法随意访问

2. 测试类很少创建自己的类对象,调用自己类的成员方法,一般都是测试别的类,调用别类的成员方法

3. 针对数组的工具类:一般都是构造方法私有化,可以包含数组遍历,最值问题,索引值,冒泡排序等功能,安全性高,别的类不能new

4. 代码块:使用{}括起来的内容,分为局部代码块: (在方法定义中,限定局部变量的生命周期,如{int x = 10 ; 输出语句"x="+x}, {}外的方法和输出语句将不能调用{}内的内容,可以正常运行和显示), 构造代码块:(在类的成员位置,在执行构造方法之前先执行构造代码块) , 静态代码块(格式static{} , 因为和类有关系,所以和类一样,只加载一次,它的优先级在代码块里也是最高的)

5.  继承:将多个类的共性内容抽取出来,放在一个独立的类中,让独立类和其他类产生一种关系,这个关系被称为"继承", 关键字extends , 格式 class 子类名 extends 父类名{} , 好处是可以提高代码的复用性和维护性,是多态的前提条件

6. 继承的特点:只能被单继承,不能被多继承,但是可以层层继承,称为:多层继承, 可以使用(对象名.父类的成员方法 () ; ) 进行访问,对于非私有的成员可以直接继承,对于私有的成员可以使用公共的访问方法进行访问(如在父类创建一个公共的成员方法访问同类中的私有方法/私有变量),被私有修饰的变量和方法都只能在本类中访问

7. 继承关系中,子类的构造方法默认访问父类的无参构造方法,因为会用到父类的数据,需要先让父类进行初始化,所以当父类没有无参的时候,子类全部代码会报错,此时可以手动添加父类无参,也可以让子类的构造方法显示访问父类的有参,引入关键字:super,格式为super(变量名:xxx);需要在子类的构造方法的第一句出现,这代表父类有参的引用,super();这代表父类无参的引用,this();代表本类无参的引用,this(变量名:xxx);代表本类有参的引用

8. 子类继承父类要先执行父类的构造方法,父类构造初始化完毕之后,才能执行子类的构造方法,这叫做分层初始化

星期三:

1. 继承关系中,如果子类和父类变量名称一致,则遵循就近原则,子类若是没有成员变量,就访问父类的成员变量,不会访问父类的局部变量,如果没有父类成员就报错,顺序为子类局部---子类成员---父类成员,this.方法名 访问本类成员方法,this.变量名 访问本类成员变量

2. 实际代码中的继承关系:子类无参访问父类无参,子类有参访问父类有参

3. 方法重写:override, 如果子类和父类的成员方法名(权限修饰符 返回值 方法名)完全一致,那么子类就会将父类的功能覆盖,然后实现自己的功能(成员方法),如果在子类方法中第一句是(super.父类成员方法();),则会同时实现两个类的成员方法

4. 在有的情况下,要保证数据的安全性,父类的方法不能被子类重写覆盖,引入关键字:final(最终的,无法被更改的)和static一样属于状态修饰符,但是可以同用,同时final也可以修饰类(final class xxx)修饰后此类不能被继承,也可以修饰变量,修饰后变量成为常量,访问时使用类名. 常量名进行访问,书写格式为public static final 数据类型 常量名 = 值,此时常量为自定义常量中的编译时期常量,如果修饰的是引用类型,那么不能在new对象,因为地址值已经确定,此时常量为自定义常量中的运行时期常量

5. 多态:是指事物在不同时期表现出来的不同形态,在编制中指具体对象在内存中的变化(对象在不同时期的类型变化,比如对象猫是动物类型)

6.多态的前提条件:1.必须要有继承关系 2.必须有方法重写,因为子类要使用自己的功能 3.必须存在父类引用指向子类对象(父类名 对象名 = new 子类名 () ;)也叫向上转型,这是多态的固定格式,此时编译看左(编译时期等号左边父类方法出现问题会报错)运行看右(运行后输出的结果是等号右边子类覆盖后的方法)

7. 多态的成员访问特点: 1.成员变量:编译看左,运行看左 2.成员方法:编译看左,运行看右,因为子类重写了父类的功能 , 静态的成员方法不算重写(子父类方法名相同的)因为静态方法与类相关 3.构造方法: 和继承一样,执行分层初始化,先执行父类构造,再执行子类

8. 多态的弊端:无法访问子类的特有功能,可以使用Zi zi = new zi ();之后访问,但是会消耗内存,最佳解决方法是向下转型,将父类的引用强制转换成子类的引用 Zi z = (zi)fu ;前提是要先有向上转型

星期四:

1.多态的好处:1.提高代码的复用性,由继承保证2.提高代码的拓展性,由多态保证

2.抽象类:概括性的,不具体的,在代码中父类中不应该出现具体体现(应仅仅给出一个声明),具体体现应该出现在子类中,引入关键字:abstract,被修饰的方法成为抽象方法,而有抽象方法的类一定是抽象类,否则报错

3. 抽象方法的格式:public abstract 返回值类型 方法名 (无参/有参);

   抽象类的格式:abstract class 类名{},特点是不能被实例化(不能被new创建对象),抽象类的子类不能是抽象类,必须是具体类,除非子类中还有一个具体的子类,也就是说必须要有一个具体类的存在,此时抽象类多态的写法为:抽象父类名 对象名 = new 具体子类名(); 另一个特点是强制进行方法重写

4. 抽象类的成员特点:成员变量,成员方法,构造方法

5.abstract不能与private同用,因为抽象类必须存在方法重写,加了private就只能在当前类访问了,也不能和final用,因为被final修饰的常量不能被重写,也不能与static用,因为静态的方法算不上重写

6.接口:事物出生不具有某些能力,经过后期的培养训练而具备了这些能力,这个能力就被称为拓展功能,在编程中定义为:接口,关键字为:interface,每个接口都体现了一个额外的功能,格式为:interface 接口名(自定义,遵循大驼峰){ } ,接口内的方法只能是抽象方法,格式为public abstract 返回值 方法名 (),前两个修饰符可以不写,接口是比抽象类还抽象的类,所以可以用接口名来访问变量(同类名访问变量)

7.接口的子类格式与继承相似,class 子实现类名 implements 接口名 { },也必须进行方法重写 

8.接口多态的格式:接口名 对象名 = new 子实现类名();接口比抽象还抽象,所以更不能new

星期五:

1.在实际开发中,接口的子实现类名应该是接口名后加一个impl,以表示这是接口的子实现类

2.接口的成员变量特点:默认自带public static final修饰,所以是一个其值不能被修改的静态成员,系统会自动隐藏这三个修饰符,所以可以省略不写

3.接口的成员方法:默认自带public abstract修饰,可以省略不写,所以方法必须是一个抽象方法,也就必须存在方法重写

4.接口的构造方法:接口没有构造方法,因为他通过子实现类的构造方法来进行实例化

5.类与类的关系:继承关系extends,只能单继承和多层继承

6.接口与类的关系:实现关系lmplements,一个类继承另一个类的同时,可以实现多个接口,如:class 子实现类名 extends 父类名 lmplements 接口1,接口2{ 里面重写父类,接口1,2的方法 }

6.接口与接口的关系:继承关系extends,可以单继承和多继承

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值