黑马程序员技术交流社区
标题:
子父继承的一个小程序不太懂,求解
[打印本页]
作者:
柏涛
时间:
2013-12-28 09:24
标题:
子父继承的一个小程序不太懂,求解
本帖最后由 柏涛 于 2013-12-28 09:27 编辑
class Person
{
private String name;
Perosn (String name)
{
this.name = name;
}
void show(){}
}
class Student extends Person
{
Student(String name)
{
super(name);
}
void method()
{
super.show();
}
}
好抽象啊 这个
作者:
kun1990
时间:
2013-12-28 09:39
Student类继承了Person类,表示Person类中的除了private修饰的东西都是可以继承的,super(name)表示的是继承了父类的构造方法Person(String name) 类推suuper.show()继承了父类的show()方法
作者:
75100313
时间:
2013-12-28 10:30
public class Person {
private String name;
// 父类的有参构造
public Person(String name) {
super();
this.name = name;
}
// 父类自己定义的show()方法 public修饰可以继承
public void show() {
System.out.println("person");
}
}
复制代码
/*
* 子类必须通过super关键字调用父类的构造函数 和方法
* */
public class Student extends Person {
public Student(String name) {
// super 显示代表调用了父类有参构造
super(name);
}
// 子类自己的方法
public void method() {
// super 代表调用了父类的show()方法
super.show();
}
}
复制代码
作者:
克锋
时间:
2013-12-28 10:52
标题:
RE: 子父继承的一个小程序不太懂,求解
在子类父类的继承问题上,其实显示生活中的情景是一致的。比如,人与学生,可以说,这个人叫张三,这个学生叫李四,。也可以说这个人叫李四,这个学生叫李四,
但是不能说这个学生叫张三
。所以,父类的属性子类是不能覆盖的。另外,人与学生都有吃饭的方法,但是吃饭的方式是不同的。这就存在了方法的覆盖,比如:人 张三 = 学生 张三,调用人的吃饭方法,与调用张三那的吃饭方法,都是张三在吃饭,所以这就是方法的覆盖。
注意:一切私有的东西【好吧,就叫东西】都是不能被别人调用,覆盖的。
表达能力有限,附上代码以供参考
package com.chenkf.study;
public class Student extends Person{
public String name = "李四";
private int age;
public static void main(String[] args) {
Person student = new Student(); //student 人的引用,实际上就是一个学生对象
System.out.println(student.name);//打印出父类【人】的属性值
Student s = (Student) student;//因为我们知道,这个人就是学生,就可以强制把人变为学生。
System.out.println(s.name);//打印的是学生的名字
System.out.println(student.getAge());//打印的是0,因为,子类覆盖了父类的getAge()方法
student.eat();//调用的是子类的方法。
//student.privateTest();//这个方法是不能调用的,因为是父类的私有方法
s.privateTest();//调用本类的私有方法。ok
//想要调用父类已被子类覆盖的方法,可以使用super关键字,因为在static与this,super不能同时存在,所有只能在写个非静态方法
s.test();
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public void eat() {
System.out.println("子类吃饭。");
}
public void test(){
super.eat();//调用父类的吃饭的方法。
}
private void privateTest(){
System.out.println("我是李四");
}
}
class Person{
public String name = "张三";//父类的属性
private int age = 10;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
private void privateTest(){
System.out.println("我是张三");//只能被本类方法调用。
}
public void eat(){
System.out.println("父类吃饭。");
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2