一、访问控制
(1)类成员的访问控制符有:public(公有的)、private(私有的)、protected(保护的)、default(缺省的)
(2)级别由小到大:private < default < protected < public
(3)对于class的权限修饰符只可以用public和default,public类可以在任何地方被访问,default泪痣可以被同一个包内部的类访问
二、继承
1、继承需要符合关系:is-a,子类具有父类的一般特性(包括属性和行为)以及自身的特殊特性,C++支持多继承,但Java只支持单继承(一个子类只能有一个基类,一个基类可以派生出多个子类)
2、继承的实现:Java中使用extends关键字实现类的继承机制
<modifier>class<name>
[ extends<superclass>]
{......}
例: class pet {
class Dog extends pet {...
}
}
3、继承与权限控制
有些父类成员不能继承
(1)private成员
(2)子类与父类不在同一个包,使用默认访问权限的成员
(3)构造方法
4、继承中的构造方法
(1)子类的构造的过程中必须调用其基类的构造方法
(2)子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法,使用this(argument_list)调用本类的另外的构造方法
(3)如果子类的构造法方法中没有显示调用基类构造方法,则系统默认调用基类无参数的构造方法
(4)如果子类构造方法中既没有显示调用基类构造方法,而基类中又没有无参的构造方法,则编译出错
5、Object类
(1)Object类是所有Java类的父类
(2)如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类
public class Person {
.....
}
等价于:public class Person extends Object {
......
}
6、关键字:super
super.print () 调用父类的方法
注意:调用必须作为子类构造方法中的第一条语句
例:
7、toString方法
(1)Object类中定义有public String toString()方法,其返回值是String类型,描述当前对象的有关信息
(2)在进行String与其他类型数据的连接操作时,将自动调用该对象的toString()方法
(3)可以根据需要在用户定义类型中重写toString()方法
8、equals方法
(1)Object 类中定义有:
public boolean equals(Object obj)方法,提供定义对象是否“相等”的逻辑
(2)定义:x.equals (y)当x和y是同一个对象的应用时返回true否则返回false
(3)J2SDK提供的一些类,如String,Date等,重写了Object的equals方法,调用这些类的equals方法,x.equals(y),当x和y所引用的对象是同一个类对象且属性内容相等时(并不一定是形同对象),返回true否则返回false
(4)可以根据需要在用户自定义类型中重写equals方法
三、方法的重写
1、规则
(1)在子类中可以根据需要对从基类中继承来的方法的进行重写
(2)重写的方法名、参数列表和返回类型必须与父类方法相同
(3)重写方法不能使用比被重写方法更严格的访问权限
(4)私有方法不能继承因而也无法重写
2、方法重载与重写的区别
方法重载发生在同类中,参数不同,与返回值无关,与访问修饰符无关
方法重写发生在子类中,参数相同,返回值相同,访问修饰符不能比父类更严格(不能缩小,只能扩展,一般相同)