面向对象(中)-super调用属性和方法、super调用构造器
package top.qaqaq.java.P276;

public class Person {

	String name;
	int age;
	int id = 1001;//身份证号
	
	public Person() {
		System.out.println("我无处不在!");
	}
	
	public Person(String name) {
		this.name = name;
	}
	
	public Person(String name, int age) {
		this(name);
		this.age = age;
	}
	
	public void eat() {
		System.out.println("人:吃饭");
	}
	
	public void walk() {
		System.out.println("人:走路");
	}
	
}
package top.qaqaq.java.P276;

public class Student extends Person {

	String major;
	int id = 1002;//学号
	
	public Student() {
		super();
	}
	
	public Student(String major) {
		super();
		this.major = major;
	}
	
	public Student(String name, int age, String major) {
//		this.name = name;
//		this.age = age;
		super(name,age);
		this.major = major;
	}
	
	@Override
	public void eat() {
		System.out.println("学生:多吃有营养的食物");
	}
	
	public void stduy() {
		System.out.println("学生:学习知识");
		this.eat();
		super.eat();
		walk();
	}
	
	public void show() {
		System.out.println("name = " + name + ",age = " + age);
		System.out.println("id = " + this.id);
		System.out.println("id = " + super.id);
	}
}
package top.qaqaq.java.P276;
/*
 * super关键字的使用
 * 1. super理解为:父类的
 * 2. super可以用来调用:属性、方法、构造器
 * 
 * 3. super的使用:调用属性和方法
 * 
 * 		3.1 我们可以在子类的方法或构造器中。通过使用"super.属性"或"super.方法"的方式,显式的调用
 * 		父类中声明的属性或方法。但是,通常情况下,我们习惯省略"super."
 * 		3.2 特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,则必须显式的
 * 		使用"super.属性"的方式,表明调用的是父类中声明的属性。
 * 		3.3 特殊情况:当子类重写了父类中的方法以后,我们想在子类的方法中调用父类中被重写的方法时,则必须显式的
 * 		使用"super.方法"的方式,表明调用的是父类中被重写的方法。
 * 
 * 4. super调用构造器
 * 		4.1 我们可以在子类的构造器中显式的使用"super(形参列表)"的方式。调用父类中声明的指定的构造器
 * 		4.2 "super(形参列表)"的使用,必须声明在子类构造器的首行!
 * 		4.3 我们在类的构造器中,针对于"this(形参列表)"或"super(形参列表)"只能二选一,不能同时出现
 * 		4.4 在构造器的首行,没有显式的声明"this(形参列表)"或"super(形参列表)",则默认调用的是父类中空参的构造器
 * 		4.5 在类的多个构造器中,至少有一个类的构造器中使用了super(形参列表),调用父类中的构造器
 * 
 */
public class SuperTest {
	
	public static void main(String[] args) {
		
		Student s = new Student();
		s.show();
		
		System.out.println();
		
		s.stduy();
		
		Student s1 = new Student("Tom", 21, "IT");
		s1.show();
		
		System.out.println("**********************");
		Student s2 = new Student();
	}

}
package top.qaqaq.java.P276;

public class Circle {

	private double radius;// 半径

	public Circle() {
		radius = 1.0;
	}
	
	public Circle(double radius) {
		this.radius = radius;
	}

	public double getRadius() {
		return radius;
	}

	public void setRadius(double radius) {
		this.radius = radius;
	}

	//返回圆的面积
	public double findArea() {
		return Math.PI * radius * radius;
	}

}
package top.qaqaq.java.P276;

public class Cylinder extends Circle {

	private double length;// 高

	public Cylinder() {
		length = 1.0;
	}

	public double getLength() {
		return length;
	}

	public void setLength(double length) {
		this.length = length;
	}

	//返回圆柱的体积
	public double findVolume() {
//		return Math.PI * getRadius() * getRadius() * getLength();
		return super.findArea() * getLength();
	}
	
	@Override
	public double findArea() {//返回圆柱的表面积
		return Math.PI * getRadius() * getRadius() * 2 + 
				2 * Math.PI * getRadius() * getLength();
	}

}
package top.qaqaq.java.P276;

public class CylinderTest {

	public static void main(String[] args) {
		
		Cylinder cy = new Cylinder();
		
		cy.setRadius(2.1);
		cy.setLength(3.4);
		double volume = cy.findVolume();
		System.out.println("圆柱的体积为:" + volume);
		
		//没有重写findArea()时;
//		double area = cy.findArea();
//		System.out.println("底面圆的面积:" + area);
		//重写findArea()以后
		double area = cy.findArea();
		System.out.println("圆柱的表面积:" + area);
		
		System.out.println("*************************");
		Cylinder cy1 = new Cylinder();
		double volume1 = cy1.findVolume();
		System.out.println("圆柱的体积为:" + volume1);
	}
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇