20200925+袁鑫
学习日志:
知识总结:
封装
封装就是对类内部细节进行隐藏,对外不可见,外部程序不能直接访问。
能有效避免外部错误对对象的影响。让使用者只能通过规定的方式来访问数据。是通过访问修饰符来限制不合理的操作。
包
包就是文件夹,包名一般是公司域名去掉www后倒置。
作用:
- 存放类:包中能存放类,易于找到和使用相应类文件。
- 访问命名冲突:java中允许有同名类出现,但是不能在同一个包下。可以通过包来区分类。
- 包允许在更广的范围内保护类,数据和方法。根据访问规则,包外的代码可不能访问该类。包实际上是一种访问控制机制,通过包来限制和制约类之间的访问。
访问修饰符
- public:公有
- private:私有的
- 啥也不写(package-Access):包修饰符
- protected:保护
同类中:public、protected、package-Access、private
同包其他类:public、protected、package-Access
同包子类:public、protected、package-Access
不同包子类中:public、protected、
不同包非子类:public
访问权限 从小到大:public --> protected --> 缺省 --> private
访问修饰符不能修饰局部变量
继承
通过从现在类中继承其属性和方法,来实现充实自身内容,这种现象称为继承。
现有类称为 父类/超类/基类
新类称为 子类/扩展类
继承的作用是代码重用,增加软件的可扩展性。
java只有单继承,也就是只能有一个直接父类。
继承表达的是 is a 关系, 子类 si a父类
特点:
- 可以继承父类中用public和protected和packag-Access修饰的属性和方法,packagae-Access修饰的属性和方法只能在同包中继承。private修饰的属性和方法不能被继承。
- 父类的构造方法不能被继承
- 子类可以扩展
- 子类可以重写override父类的方法,不能重写构造方法。
- 提高类之间的耦合性。
重写
重写(override)一般发生在继承中,描述子类重写父类的方法。当父类的方法不能满足子类的需求时,子类可以重写此方法,也叫覆盖。
子类中有和父类中同名且同参(相同)的方法,称为方法的重写(覆盖)。如果返回值不是同一个类型会报错。
方法重写需要满足的条件:
- 重写一定发生在继承中。
- 重写方法与被重写的方法要相同(方法名称、参数、返回值)。
- 重写方法的访问权限不能缩小。
注意:不能重写父类中final修饰的方法,不能重新给final修饰的属性赋值。
重载和重写的区别
重载:在一个类中,多个方法名相同,参数个数,类型,顺序不同。与返回值和修饰符无关。
重写:在继承关系中,方法名和参数、返回值都相同,方法体可以改变
final
final修饰的类不能被继承, final 修饰的属性(字段)补课修改,final修饰的方法不能被重写。final修饰变量称为常量,常量必须在赋初始值之后才能使用,且不能更改。
final修饰对象,因为对象本身是可变的,不可变的是变量对于对象的引用。
final自变量,将方法的参数设置为final类型,表示在方法中,此参数不能改变
子类和父类的关系
在子类进行实例化时,调用父类的构造方法,而且时先调用父类构造在执行子类构造方法中的其他语气。
要实例化子类就得先实例化父类
当父类中有无参构造时,子类的构造方法可以不写 调用父类构造(super()),java会自动在子类构造方法的第一行上super();但是,如果父类中没有无参构造,就需要我们手动在子类构造中调用父类的构造方法。
super
super([参数列表])是调用父类的构造方法,在调用构造方法时必须放在方法的第一行。
super.属性表示调用父类的属性,super.方法([参数列表])表示调用父类的方法。
super表示父类引用
注意:
- super只能出现在子类(成员方法、构造方法)中。
- super用于调用父类的成员,方法,属性,构造方法。
- super([参数列表])在调用父类构造方法时,要写在构造方法代码的第一行。
- super不能调用父类private修饰的属性和方法。
遮蔽
有些声明可能在其作用域的一部分被相同名称的另一个声明遮蔽。
隐藏
用于将被继承但有子类中的声明而不被继承的成员。
static方法可以被继承,但不会被重写。
心得:
经过今天的学习,我感觉我基本都能理解,但是每次涉及到要画内存示意图,什么常量池、栈、堆、有些不太能理解。 希望浩哥可以讲解一下。
近期评论