Java

xiaoxiao2021-02-28  118

类篇entry2

关键词: 继承; Object类; 多态;

继承

通过extends关键字实现;子类可以从父类继承所有非private的属性和方法作为自己的成员;

子类在继承父类的时候,首先应该满足父类可被访问,例如当子类和父类不 在同一个包当中时,父类修饰符必为public;在父类能被访问的前提下,凡 是修饰符为public或是protected的父类属性成员或是方法能被子类所访问; private的属性成员或是方法则不能被访问。

Object类

Object类是所有类的共同祖先,即使定义类时没有写extents Object。在Object当中定义了许多方法,这些方法都可以被所有子类所继承。

最终类

被final修饰的类为最终类,不能有子类。

多态

多态的定义

多态的概念:多态是指一个程序中同名的不同方法共存的情况Java中提供两种多态的机制:重载(overloading)与覆盖(overriding)

重载例1

class Parent{ public int getScore(){ return 3; } public int getScore(int i){ return i; } }

类Parent中有两个getScore方法,它们的参数有所不同

重载例2 如:class Applet

--AudioClipgetAudioClip(URL url) 根据URL获得AudioClip对象AudioClipgetAudioClip(URL url, String name) 根据URL和name联合构成的URL得到AudioClip对象 public AudioClip getAudioClip(URL url) { 。。。。。。。; } public AudioClip getAudioClip(URL url, String name) { try { //通过重新构造一个新的URL对象,之后调用上面的同名方法来实现功能。 return getAudioClip(new URL(url, name)); } catch (MalformedURLException e) { return null; } }

重载例3 如:java.util.Class LinkedList

--BooleanaddAll(Collection c) 将一个集合对象插入到链表末尾当中BooleanaddAll(int index, Collection c) 将一个集合对象插入到链表的指定位置当中。 public boolean addAll(Collection c) { return addAll(size, c); //size是链表长度,此方法调用下面的方法,将传入对象插入到指定链表尾部 } //index是链表的当前索引号 public boolean addAll(int index, Collection c) { …… }

覆盖

子类对父类的同名方法(方法名称相同,参数相同,返回 类型相同)重新进行定义,即在子类中定义与父类中已定 义的相同名而内容不同的方法。

方法名称相同,参数名称相同,返回类型相同:覆盖方法名称相同,参数名称不同:重载方法名称相同,参数名称相同,返回类型不同:编译不能通过

覆盖例1

class Parent { public int getScore() { return 3; } public String getCountryName() { return “China”; } } class Son extends Parent { public int getScore(){ return 4; } } public class RunSon{ public static void main(String args[]){ Son s = new Son(); System.out.println(s.getScore()); System.out.println(s.getCountryName()); } } //---------------------- 输出结果: 4 China

覆盖——注意

子类的访问修饰符权限应等于或大于父类static方法不能覆盖非静态方法,也不能被非static方法覆盖,但是static方法可以覆盖static方法方法前有final修饰符,此方法不能在子类方法中进行覆盖在JDK中,很多父类的方法被子类重新覆盖,赋予了不同的含义,如Object类中的boolean equals(Object obj)方法抽象类中如果存在抽象方法,则具体子类必须对抽象方法进行覆盖

覆盖例2

class Super { public Integer getLenght() { return new Integer(4); } } public class Sub extends Super { public Long GetLenght() { return new Long(5); } public static void main(String[] args) { Super sooper = new Super(); Sub sub = new Sub(); System.out.println( sooper.getLenght().toString() + "," + sub.getLenght().toString() ); } } //------------- 输出结果: 44

visitor tracker


转载请注明原文地址: https://www.6miu.com/read-42816.html

最新回复(0)