java基础--类的继承和权限的控制,访问控制,方法的重写,super关键字,继承中的构造方法,object类,toString方法

类的继承与权限控制

Java中使用extends关键字实现类的继承机制

通过继承,子类自动拥有了基类(superclass)的所以成员(成员变量和方法)

Java只支持单继承,不允许多继承:

一个子类只能有一个基类

一个基类可以派生出来多个子类

 

访问控制:

Java权限修饰符public protected private置于累的成员定义前,用来限制其他对象对该对象成员的访问权限。

修饰符

类内部

同一个包

子类

任何地方

private

Yes

 

 

 

default

Yes

Yes

 

 

protected

Yes

Yes

Yes

 

public

Yes

Yes

Yes

Yes

对于class的权限修饰只可以用public default

   public类可以在任何地方被访问

   default类只可以被同一个包内部的类访问

 

方法的重写

1.         在子类中可以根据需要对基类中继承来的方法进行重写。

2.         重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。

3.         重写方法不能使用比被重写方法更严格的访问权限。

 

Super关键字

Java类中使用super来引用基类的成分;

Super指向当前类的父类对象

 

继承中的构造方法:

1.         子类的构造的过程中必须调用其基类的构造方法

2.         子类可以在自己的构造方法中

a)         使用super(argument_list)调用基类的构造方法。

b)         使用this(argument_list)调用本类的另外的构造方法

c)         如果调用super,必须写入子类构造方法的第一行

3.         如果子类的构造方法中没有显示地调用基类的构造方法,则系统默认调用基类无参数的构造方法

4.         如果子类构造方法中即没有显示调用基类构造方法,而基类中没有无参的构造方法,则编译出错。

 

Object

Object类是所有Java类的根基类

如果在类的声明中未使用extends关键字指明其基类,则默认基类为object

public class Person{

       

}

等价于

  public class Person extends Object{

}

 

protected  Object

clone()
          
创建并返回此对象的一个副本。

 boolean

equals(Object obj)
          
指示其他某个对象是否与此对象相等

protected  void

finalize()
          
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

 Class<?>

getClass()
          
返回此 Object 的运行时类。

 int

hashCode()
          
返回该对象的哈希码值。

 void

notify()
          
唤醒在此对象监视器上等待的单个线程。

 void

notifyAll()
          
唤醒在此对象监视器上等待的所有线程。

 String

toString()
          
返回该对象的字符串表示。

 void

wait()
          
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。

 void

wait(long timeout)
          
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。

 void

wait(long timeout, int nanos)
          
在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。

toString方法

Object类中定义了public String toString() 方法,其返回值是String类型,描述当前对象的有关信息

 

在进行String与其它类型数据的连接操作时(如:System.out.println(“info”+Person),将自动调用该对象类的toString()方法

 

可以根据需要在用户自定义类型中重写toString()方法。

你可能感兴趣的:(java,多线程)