您的位置:首页 > 编程语言 > Java开发

Java基础(极客)——12、Java面向对象基本特征:继承

2015-05-26 15:52 627 查看
package com.zhh.java.jicheng;

/**

* 1、Java继承的实现

* 继承就是扩展父类功能

* 子类可以调用父类的方法和属性,子类具备父类的所有,子类的一切都上在父类的基础上扩展而来的

* 这样减少了代码的冗余(重复)

*

* 父类只能调用父类中的中的方法和属性,子类即可调用自己的方法和属性,也可调用父类的方法和属性

* 如果方法被重写,无论子类父类调用的都是,重写后的方法

*

*

*

*/

public class JiChengDemo1 {

public static void main(String[] args) {

Student student = new Student();

student.setName("张飞");

student.setAge(30);

student.setScore(100);

student.toString();

}

}

class Person {

private String name;

private int age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

/**

*

* 子类继承了父类,说明子类有了父类的所有方法和属性

* 子类可以调用父类的所有方法和属性

*/

class Student extends Person {

private int score;

public int getScore() {

return score;

}

public void setScore(int i) {

this.score = i;

}

@Override

public String toString() {

System.out.println(getName() + ":" + getAge() + ":" + getScore());

return super.toString();

}

}

package com.zhh.java.jicheng;

/**

* 2、Java继承的限制

* 1)在java中只能单继承,可以多实现(一个孩子只有一个父亲)

* 2)子类不能直接访问父类的私有成员(可以调用getset)

*

*

*/

public class JiChengDemo2 {

public static void main(String[] args) {

Worker worker = new Worker();

worker.setAge(100);

worker.tell();

}

}

class People {

private int age;

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

class Worker extends People {

public void tell() {

// System.out.println(age);当age为private修饰是,子类不能调用,只能同过getset方法调用

System.out.println(getAge());

}

}

package com.zhh.java.jicheng;

/**

*3、Java子类对象实例化过程

*在子类实例化之前,必须先调用父类中的构造方法(系统调用),在调用子类中的构造方法

*

*

*/

public class JiChengDemo3 {

public static void main(String[] args) {

Son son = new Son();

/* 打印的结果是

* 父类的构造方法

* 子类的构造方法

*

*/

}

}

class Father {

public Father() {

System.out.println("父类的构造方法");

}

}

class Son extends Father {

public Son() {

//系统有一个默认super();强行调用父类构造方法

System.out.println("子类的构造方法");

}

}

package com.zhh.java.jicheng;

/**

* 4、Java方法重写与super关键字

* 方法重写:子类写了和父类同样的方法(方法名,返回类型 ,参数都相同)

*

* 重写限制:

* 被子类重写的方法不能比父类有更加严格的访问权限

* private<default<public

* private只能在本类中访问

* 默认的是default只能在同一包下访问

* public整个工程下都可访问

*

* super强行调用父类方法的执行

* super();强行调用父类中的构造方法

* super.tell();强行调用父类中的名字叫tell()的方法

* super不一定在重写时使用,也可以表示那些方法是从父类中继承而来的

*/

public class JiChengDemo4 {

public static void main(String[] args) {

B b = new B();

b.tell();

}

}

class A {

//public整个工程下都可访问到

public void tell() {

System.out.println("我是tell方法");

}

//private只能在本类中访问

private void say() {

}

//默认的是default只能在同一包下访问

void print() {

}

}

class B extends A {

//方法重写

/*重写此方法的修饰符只能是public,其他的修饰符都比他严格

* private<default<public

*

*/

@Override

public void tell() {

super.tell();//super强行调用父类方法的执行

System.out.println("我重写了tell方法");

}

}

package com.zhh.java.jicheng;

/**

* 5、Java重写与重载的区别

*

方法重载Overloading

方法名相同,参数不同(参数的个数,顺序,类型)

对权限没有要求

发生在一个类中

方法重写Overriding

方法名,参数,返回类型完全相同

被重写的方法不能拥有比父类更加严格的权限

发生在继承中

*

*/

public class JiChengDemo5 {

public static void main(String[] args) {

}

}

源码下载:
http://download.csdn.net/detail/zhaihaohao1/8741715
视频下载:
http://c38.yunpan.360.cn/my/index/#%2F%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91%2Fjava%2F
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: