继承之成员方法成员变量之爸爸偷钱
来源:互联网 发布:nginx下载windows 64 编辑:程序博客网 时间:2024/04/27 20:39
个人对继承中成员方法成员变量的一些理解.完全从小白角度看的问题.希望能给新学JAVA继承的同学加深理解如有不妥之处请各位大大加以指正.O(∩_∩)O谢谢!
package day08继承;
class Father {
private int num = 10;// num相当于爸爸的私房钱(加了private)
public int num2 = 20; // 这是家庭共有的钱 谁都可以花
private void steal() {//steal()方法相当于爸爸的独门绝技(加了private)不会轻易传给别人,哪怕是自己的儿子
System.out.println("爸爸偷东西很厉害");
}
public void show() {
System.out.println(num);
System.out.println(num2);
steal();// 至于这里为啥偷东西的技术又出来了?
//爸爸自己定义的展示方法,可以想象成让别人羡慕他.只是被定义成公有的,
//所以儿子也可以使用爸爸拥有的技术了
System.out.println("steal()被调用了");
}
}
class Son extends Father {
public void function() {
// System.out.println(num); //儿子不能用爸爸的私房钱
System.out.println(num2);
}
}
public class ExtendsDemo3 {
public static void main(String[] args) {
Son son = new Son();
// son.steal();//爸爸不会把偷东西这种见不得人的技术直接传承给儿子,毕竟儿子要学好习惯
son.show();
// son.function();//很明确的说过儿子不能用爸爸的私房钱,要是用的话会被打死!
}
}
运行结果:
10
20
爸爸偷东西很厉害
steal()被调用了
总结:父类的私有方法不会被子类继承
父类的私有成员变量不能被子类访问
/*
继承中成员方法的关系:
A:子类中的方法和父类中的方法声明不一样,这个太简单。
B:子类中的方法和父类中的方法声明一样,这个该怎么玩呢?
通过子类对象调用方法:
a:先找子类中,看有没有这个方法,有就使用
b:再看父类中,有没有这个方法,有就使用
c:如果没有就报错。
*/
package test;
class Father {
public void driveCar() {
System.out.println("爸爸会开车");
}
}
class Son extends Father {
public void method() {
System.out.println("儿子会打LOL");
}
public void driveCar() {
System.out.println("儿子会开车");
}
}
class Test {
public static void main(String[] args) {
//创建对象
Son s = new Son();
s.driveCar();//儿子会开车就不麻烦爸爸了
s.method();
//s.fucntion(); //找不到符号
}
}
运行结果:
儿子会开车
儿子会打LOL
/*
方法重写:子类中出现了和父类中方法声明一模一样的方法。
方法重载:
本类中出现的方法名一样,参数列表不同的方法。与返回值无关。
子类对象调用方法的时候:
先找子类本身,再找父类。
方法重写的应用:
当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法。
这样,即沿袭了父类的功能,又定义了子类特有的内容。
案例:
A:定义一个手机类。
B:通过研究,我发明了一个新手机,这个手机的作用是在打完电话后,可以听天气预报。
按照我们基本的设计,我们把代码给写出来了。
但是呢?我们又发现新手机应该是手机,所以,它应该继承自手机。
其实这个时候的设计,并不是最好的。
因为手机打电话功能,是手机本身就具备的最基本的功能。
所以,我的新手机是不用在提供这个功能的。
但是,这个时候,打电话功能就没有了。这个不好。
最终,还是加上这个功能。由于它继承了手机类,所以,我们就直接使用父类的功能即可。
那么,如何使用父类的功能呢?通过super关键字调用
*/
class Phone {
public void call(String name) {
System.out.println("给"+name+"打电话");
}
}
class NewPhone extends Phone {
public void call(String name) {
//System.out.println("给"+name+"打电话");
super.call(name);
System.out.println("可以听天气预报了");
}
}
class ExtendsDemo9 {
public static void main(String[] args) {
NewPhone np = new NewPhone();
np.call("林青霞");
}
}
- 继承之成员方法成员变量之爸爸偷钱
- C++继承之成员变量
- java开发之成员变量及成员方法的反射
- C++多重继承之成员变量的偏移量
- 继承之构造方法之爸爸开车
- java 基础之成员变量,成员方法和局部变量,实例方法
- java中的成员方法与成员变量的继承
- java中的成员方法与成员变量的继承
- 继承成员变量和成员方法的区别
- 继承中的成员方法和变量
- 成员变量方法_继承有别
- 继承中的同名成员变量处理方法
- JAVA之成员变量初始化
- OC之成员变量封装
- java反射之获取方法,成员变量,构造方法
- JAVA 继承 成员变量
- 类的成员之二:成员方法
- 类的基本知识之成员变量、成员方法和构造方法
- UIScrollView和UIPageView基本用法
- Spark:比Hadoop更强大的分布式数据计算项目
- POJ 2513 解题报告
- R语言做文本挖掘:基于网购评论提炼电热水器的差异化卖点
- 第一篇
- 继承之成员方法成员变量之爸爸偷钱
- 函数式编程
- POJ 1141 - Brackets Sequence(区间DP)
- 输入打印语句打印引用的问题
- 巧用Photoshop蒙板抠出复杂的图片
- 用SQLPLUS调试oracle获取数据库表空间总大小、剩余大小的存储过程
- SpringMVC学习系列(7) 之 格式化显示
- git使用_入门
- SpringMVC学习系列(8) 之 国际化