java 基础 3 --继承、重写

原创 2016年08月30日 17:59:01
1.继承是一种由已有的类创建新的类的机制。利用继承,可以先定义一个共有属性的一般类,根据该一般类再定义具有特殊属性的子类,子类继承一般类的属性和行为,并根据需要增加它自己的新属性和行为。
【注:java不支持多重继承,即子类只能有一个父类。子类与父类的关系是“is-a”关系。】

2.类有两种重要的成员:成员变量和方法。

3.当父类和子类在同一个包时,可以继承父类用 private/protected 修饰符 修饰的成员变量和方法,不在同一包中将不能继承。

4.在子类继承的方法只能操作子类继承和隐藏的成员变量,子类新定义的方法可以操作子类继承和子类新生明的成员变量,但无法操作子类隐藏的成员变量(需要使用super关键子操作子类隐藏的成员变量。)

5.方法重写(覆盖):
a. 如果子类可以继承父类的某个方法,那么子类就有权重写这个方法。
b. 方法的重写是指:子类中定义一个方法,这个方法的类型和父类的方法类型一致(或者父类的方法的类型的子类型),并且这个方法的名字、参数个数、参数类型和父类的方法完全相同。
c. 重写的目的:
1.子类通过重写可以隐藏继承的方法;子类通过方法的重写可以把父类的状态和行为改变为自身的状态和行为。
2.重写方法既可以操作继承的成员变量和调用继承的方法,也可以操作子类声明的成员变量、调用新定义的其他方法,但无法操作隐藏的变量和方法。【操作隐藏的变量和方法可以通过super 进行操作!!!】
d. 在重写父类的方法时,不允许降低方法的访问权限,但可以提高访问权限。
访问权限由高到低:
public--protected--友好的--private。
注:在java中,如果方法前没有访问权限的修饰,默认是 友好的 。
e.在JDK 1.5 版本以后,子类允许重写方法的类型可以是父类方法类型的子类型。
例:

class A{
Object get(){
return null;
}
}

class B extends A{
Integer get(){ //Integer是Object的子类
return new Integer(100);
}
}

public class Test {
public static void main(String[] args) {

B b = new B();
Integer t = b.get();
System.out.println(t.intValue());
}

}

输出结果:100
【拓展:
inValue的使用:
1.intValue()是java.lang.Number类的方法,Number是一个抽象类。Java中所有的数值类都继承它。也就是说,不单是Integer有intValue方法,Double,Long等都有此方法。
2.此方法的意思是:输出int数据。每个数值类中具体的实现是不同的。
例如:
Float类和Double类的intValue方法,就是丢掉了小数位,而Long的intValue方法又不一样的。


最后用例子进行一下总结:
【继承、重写的例子】

class University{
void enterRule( double math,double enghlish, double chinese){
double total = math+enghlish+chinese;
if (total>=180) {
System.out.println(total+":分数达到大学分数线!");
}else{
System.out.println(":分数未达到大学分数线!");
}
}
}

class ImportantUniversity extends University{
void enterRule( double math,double enghlish, double chinese){
double total = math+enghlish+chinese;
if (total>=220) {
System.out.println(total+":分数达到名牌大学分数线!");
}else{
System.out.println(total+":分数未达到名牌大学分数线!");
}
}
}


public class Test {
public static void main(String[] args) {

double math = 6, enghlish = 50, chinese = 95;
ImportantUniversity iu = new ImportantUniversity();
iu.enterRule(math, enghlish, chinese);//调用重写的方法
System.out.println("");
math=59;
enghlish=86;
chinese=80;
iu.enterRule(math, enghlish, chinese);//调用重写的方法
}

}
输出结果:
151.0:分数未达到名牌大学分数线!

225.0:分数达到名牌大学分数线!

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

黑马程序员 07 Java基础教学 - 07 - 面向对象(3) 之 继承、抽象、接口

-------android培训、java培训、期待与您交流! ---------- 本日志doc文档下载 一、继承 1,特点 A,提高了代码的复用性。 B,让类与类之间产生了关系,有了这个...

JAVA基础第七天学习日记_继承、重写、final关键字、抽象、接口

----------------------android培训、java培训、期待与您交流! ---------------------- 继承:   提高了代码的复用性。   让类与类产生...

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

一、代码块      在Java中,使用{}括起来的代码被称为代码块。根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块。 局部代码块 在方法中出现;限定变量生命周期,...

JAVA面向对象基础:继承、变量隐藏、方法重写、包、修饰符、this、super

本文转载链接地址:http://android.yaohuiji.com/archives/3214 一、继承 1、继承的概念 继承是面向对象的三大特性之一。在语义上继承的意思是照法律或遵照...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)