Java面向对象之关键字super 入门实例
2018-06-18 01:58:25来源:未知 阅读 ()
一、基础概念
(一)super关键字
super关键字的用法和this相似。this代表的是当前对象。super代表的是父类中内存空间。
子父类中是不会出现同名属性的情况。
(二)继承中、成员变量问题
当成员变量中出现了同名的局部变量,用关键字 this来区分。当父类中出现了同名的成员变量,用关键字 super来区分
(三)继承中,成员函数问题
1、子父类中出现一样的方法(返回值类型、函数名、参数列表等都一样),创建子类对象调用该方法时,运行的是子类中的方法。
2、这种情况称之为函数的另一个特性----(override)覆盖、重写、复写。
3、注意:
子类覆盖父类权限必须大于等于父类的权限。
覆盖中,静态只能覆盖静态,或者被静态覆盖。
(四)继承中,构造函数问题
1、创建子类对象,父类中的构造函数也会运行的原因:子类的所有构造函数中的第一行,都有一个默认访问父类中空参数的构造函数super();
2、调用本类中的构造函数使用this([实参列表])语句。调用父类中的构造函数用super([实参列表])语句。
3、子类实例化的过程,必须先执行父类中的初始化的原因:子类继承了父类中的内容,所以子类在实例化时,必须要先执行父类中的内容。
4、注意:
如果父类中没有空参数的构造函数时,子类的构造函数必须通过super语句指定要访问的父类中的构造函数。
this()语句和super()语句都必须出现在构造函数的第一行。因为初始化的动作要先执行。所以this()语句和super()语句只能存在一个。
二、实例代码(一)
1 class Fu //默认继承 object 2 { 3 int num = 4; 4 public void show() 5 { 6 System.out.println("父类中的成员函数show ......" ); 7 } 8 Fu() 9 { 10 //默认存在语句superz(); 11 //显示初始化。 12 //构造代码块初始化。 13 System.out.println("父类中的构造函数Fu ......"); 14 } 15 Fu(int x) 16 { 17 //默认存在语句super(); 18 System.out.println("父类中的构造函数Fu ......"+x); 19 } 20 } 21 class Zi extends Fu 22 { 23 //子类和父类的成员变量一样的情况 24 int num = 5; 25 //子类和父类的成员函数一样的情况,进行了覆盖 26 public void show() 27 { 28 //局部变量与成员变量也一样的情况 29 int num = 6; 30 System.out.println("子类中的成员函数show ...... "); 31 32 System.out.println("num = "+num);//输出子类中局部变量num的值 33 System.out.println("num = "+this.num);//输出子类中成员变量num的值 34 System.out.println("num = "+super.num);//输出父类中成员变量num的值 35 } 36 //子类和父类的构造函数一样的情况。子类和父类的语句都执行。 37 Zi() 38 { 39 //默认存在语句super(); 40 41 System.out.println("子类中的构造函数zi ......" ); 42 } 43 Zi(int x) 44 { 45 //默认存在语句super(); 46 super(8);//显示指定super的方式来访问父类中的构造函数。必须定义在第一行 47 System.out.println("子类中的构造函数Zi ......"+x); 48 } 49 } 50 class SuperDemo 51 { 52 public static void main(String[] args) 53 { 54 Zi z1 = new Zi(); 55 z1.show(); 56 Zi z2 = new Zi(5); 57 z2.show(); 58 } 59 }
代码运行
(三)、实例代码(二)
1 class Person 2 { 3 private String name; 4 private int age; 5 6 //父类Person的构造函数 7 Person(String name,int age) 8 { 9 this.name = name; 10 this.age = age; 11 } 12 public void setName(String name) 13 { 14 this.name = name; 15 } 16 public void setAge(int age) 17 { 18 this.age = age; 19 } 20 public String getName() 21 { 22 return name; 23 } 24 public int getAge() 25 { 26 return age; 27 } 28 } 29 //Student继承Person 30 class Student extends Person 31 { 32 Student(String name,int age) 33 { 34 super(name,age);//用super调用父类Person的构造函数。 35 } 36 public void study() 37 { 38 System.out.println("name: "+this.getName()+" age: "+this.getAge()+" study ......"); 39 } 40 } 41 //Worker继承Person 42 class Worker extends Person 43 { 44 Worker (String name,int age) 45 { 46 super(name,age);////用super调用父类Person的构造函数。 47 } 48 public void work() 49 { 50 System.out.println("name: "+this.getName()+" age: "+this.getAge()+" work ......"); 51 } 52 } 53 class SuperDemo1 54 { 55 public static void main(String[] args) 56 { 57 Student p1 = new Student("xiaohong",18); 58 p1.study(); 59 Worker p2 = new Worker("xiaoming",32); 60 p2.work(); 61 } 62 }
代码运行
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash