Day 2 java


类是变量的蓝图
对象本身已知的事物称为实例变量,对象可以执行的动作称为方法;


两种变量:primitive主数据和引用
1.事实上没有对象变量这样的东西,只有引用(reference)到对象的变量;
2.对象引用变量保存的是存取对象的方法;
3.这种变量是一种类似指针的东西(引用变量是一个遥控器);
4.数组也是个对象;
注意:声明了有返回值就应该返回一个值;


继承:(避免重复代码,定义出共同的协议)
子类继承父类的方法和实例变量;子类可以重新定义实现覆盖(实例变量无法被覆盖);
设计继承:1.找出具有共同属性和行为的对象; 2.设计代表共同状态和行为的类;
3.决定子类是否需要让某项行为具有特定不同的运作方式;4.通过寻找共同行为的子类来找出更多抽象化机会;
5.“子类一旦是父类的更具体的类型,而不是借用父类的方法”;


多态(polymorphism):
1.在多态下引用与对象可以是不同类型:引用类型可以是实际对象的父类(实例:一个引用变量的数组可以存在不同的子类元素)
ex:Animal cat=new Cat();
2.参数和返回类型也可以多态:将参数声明成父类类型,那就可以传入子类对象了;
3.final修饰符(表示是继承树的末端,不能被继承);
4.覆盖不仅需要名称相同,还需要参数和返回值(返回一样的,或者他的子类)相同;否则不进行覆盖;要求存取权相同或更开放;


重载(overload):
1.两个方法名称相同,参数不同,与多态无关;
2.不允许返回类型不同但参数相同的重载;
3.可以任意更改overload版本的存取权限;


接口和抽象类:
原则:应该为不需要具体数据的,用于传承方法的父类标记为abstract(抽象类)---编译器不会让你初始化它
抽象类:除了被继承,没有用途,没有值,没有目的(除非有static成员)
抽象的方法:用来被覆盖,没有意义,不需要实体;
(非抽象类不能拥有抽象方法)(抽象的类可以有非抽象的方法)
抽象的方法必须在子类中实现;


Object:最大的父类 不是抽象的
注意:1.在ArrayList中,任何去除掉东西都被当做object的引用而不是原来的类型;
2.可以赋值任何类型给object类型的引用;
3.当引用变量的引用类型为object时,他只能使用object的方法,而不能继承他真正拥有的方法;(解决:强制转换为原来的类型,恢复功能)(instanceof运算符检查类型)

接口:
(给部分animal添加pet的属性)但接口的方法一定时抽象的,没有内容;
定义:public interface Pet{}
实现:public class Dog extends Canine implements Pet{}注意:使用implements时必须在某个类的继承下(Cannine)

接口的作用:在于提供一种契约机制,强制实现类(实现了该接口的类)必须提供接口中定义的所有方法。这有助于确保一致性和标准化
使得不同类能够按照相同的规范进行交互;
extend只能一个,implement可以有很多个;


posted @ 2024-03-07 22:10  ha1u0n  阅读(14)  评论(0)    收藏  举报