package com.atguigu.test01;
/*
* this:
* 1、意思:当前对象
* (1)构造器
* 正在被创建的对象
* (2)方法
* 正在调用该方法的对象
*
* 2、 用法
* (1)this.属性
* 当局部变量与成员变量同名时,可以在成员变量的前面加this.
* (2)this.方法
* 没有非用不可的时候
* (3)this()或this(实参列表)
* this()表示调用本类的无参构造
* this(实参列表)表示调用本类的有参构造
*
* this()或this(实参列表)必须在构造器的首行
*/
public class TestThis {
public static void main(String[] args) {
Circle c1 = new Circle(1.2);//1.2代表半径
c1.setRadius(2.5);
}
}
class Circle{
private double radius;
public Circle(){
System.out.println("一个圆对象被创建");
}
//(double radius)局部变量
//给成员变量private double radius;赋值
public Circle(double radius){
this();
this.radius = radius;
}
public void setRadius(double radius){
this.radius = radius;
}
public double getRadius(){
//return radius;//没有同名的问题,可以不加this.
return this.radius;//也可以加this.
}
public double getArea(){
return 3.14 * radius * radius;
}
public void printInfo(){
// System.out.println("半径:" + radius + ",面积:" + getArea());
System.out.println("半径:" + this.radius + ",面积:" + this.getArea());
}
}
class Student{
private String name;
private int age;
private char gender;
private int score;
public Student(){
}
public Student(String name, int age){
this.name = name;
this.age = age;
}
public Student(String name, int age, char gender, int score){
/*this.name = name;
this.age = age;*/
this(name,age);//调用上面的有参构造
this.gender = gender;
this.score = score;
}
}
package com.atguigu.test02;
/*
* super:
* 从父类中取查找,引用父类的xx
* 要求:super只能方法在子类中可见的属性、方法、构造器
*
* 用法:
* 1、super.属性
* 当子类声明了和父类同名的属性时,可以使用super.属性来访问父类的属性
*
* 2、super.方法
* 当在子类中需要调用父类被重写的方法时,可以使用super.方法
*
* 3、super()或super(实参列表)
* super();调用父类的无参构造
* super(实参列表):调用父类的有参构造
*
* 注意:
* (1)super()或super(实参列表)必须在子类构造器的首行
* (2)如果子类的构造器中,没有写super(),它也存在
* 但是如果子类构造器中写super(实参列表),那么super()就不会存在的
*/
public class TestSuper {
public static void main(String[] args) {
// B b = new B();
// b.printNum(3);
// XueSheng x = new XueSheng("张三", 23, 89);
// System.out.println(x.getInfo());
XueSheng x = new XueSheng();
}
}
class A{
int num = 1;
}
class B extends A{
int num = 2;
public void printNum(int num){
System.out.println(num);//局部变量 (int num)
System.out.println(this.num);//成员变量,子类自己的int num
System.out.println(super.num);
}
}
class Human{
private String name;
private int age;
public Human(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Human() {
super();//调用的是公共父类java.lang.Object类的无参构造
System.out.println("父类的无参构造");
}
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;
}
public String getInfo(){
return "姓名:" + name + ",年龄:" + age;
}
}
class XueSheng extends Human{
private int score;
public XueSheng(String name, int age, int score) {
super(name, age);//调用父类Human的有参构造
this.score = score;
}
public XueSheng() {
// super();//调用父类Human的无参构造
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public String getInfo(){
// return "姓名:" + getName() + ",年龄:" + getAge() + ",成绩:" + score;
return super.getInfo() + ",成绩:" + score;
}
}