类_java

类、字段、方法

    • 类是组成Java程序的基本要素(写程序就是写一个个类)
    • 是一种类对象的原型
    • 它封装了一类对象的状态和方法
      它将变量与函数封装到一个类
class Person{
	String name;//字段
	int age;//字段
	void sayHello(){//方法
		System.out.println("Hello! My name is"+name);
		}
	}
  • 字段和方法(可以说写类的目的就是要写字段和方法)
    • 字段是类的属性,是用变量来表示(字段又称域,域变量、属性、成员变量等)
    • 方法是类的功能和操作,是用函数来表示的
  • 构造方法(任何一个对象都要构造,所以一般情况下,类都有一个至多个构造方法)
    - [ ] 构造方法是一种特殊的方法
    - [ ] 用来初始化(new)该类的一个新的对象
    - [ ] 构造方法和类名同名,而且不写返回数据类型
 		Person(String n,int a){
 			name=n;
 			age=a;
 		}
如果没有定义任何构造方法,系统会自动产生一个构造方法,称为默认构造方法,默认构造方法不带参数,并且方法体为空`
Person{}`
  • 使用对象
    • 访问对象的字段或方法,需要用算符"."
	 Person p=new Person();//创建一个对象,通过引用来访问
	 System.out.println(p.name);//引用对象的变量
	 p.sayHello();//引用对象的方法
 这种使用方式的好处:封装性、安全性
  • 方法重载
    • 方法重载:多个方法有相同名字,编译时能识别出来
    • 这些方法的签名(类型)不同,或者是参数个数不同,或者是参数类型不同
	 	void sayHello(){}
	 	double sayHello(){}
	 	void(int name){}
	 	void sayHello(String name){}
	 	void sayHello(String name,int age){}
 通过方法重载实现多态
  • 类的继承
    • 子类(subclass),(继承)父类或超父类(superclass)
    • 父类包括所有直接或者间接被继承的类
    • Java支持单继承:一个类只能有一个直接父类(一个孩子只有一个父亲)C+±-
    • 子类继承父类的状态和行为
      可以修改父类的状态或重载父类的行为
      可以添加新的状态和行为
    • 继承的好处:
      可以提高程序的抽象程度(学生是人、老师也是人)
      实现代码重用,提高开发效率和可维护性
    • Java中继承是通过extends关键字来实现的
class Student extends Person{
	 		}
如果没有extends句子,则该类默认为java.lang.Object的子类
所有的类都是通过直接或间接的继承java.lang.Object得到
  • 继承关系在UML图中,是用一个箭头来表示子类与父类的关系的
    在这里插入图片描述
    类Student从类Person继承,定义如下:
class Student extends Person{
	String school;
	int score;
	boolean isGood(){return score>80;}
	//.......
	}
  • 字段继承
    • 子类可以继承父类的所有字段
    • Student自动具有Person的属性(name,age)
  • 字段的隐藏(一般不用)
    • 子类重新定义一个与从父类那里继承来的域变量完全相同的变量,称为域隐藏。
  • 字段的添加
    • 在定义子类时加上新的域变量,可以使子类比父类多一些属性。如
class Student extends Person{
	String school;//字段的添加
	int score;//字段的添加
	boolean isGood(){return score>80;}
	//.......
	}
  • 方法的继承
    • 父类的非私有方法也可以被子类自动继承。如Student自动继承Person的方法sayHello
  • 方法覆盖(修改、改写)
    • 子类也可以重新定义与父类同名的方法,实现对父类方法的覆盖
	 void sayHello(){
	 	System.out.println("Hello! My name is"+name+"My school is"+school);
	 }

通过方法的覆盖,能够修改对象的同名方法的具体实现方法

  • 方法的添加
class Student extends Person{
	String school;
	int score;
	boolean isGood(){return score>80;}//方法的1添加
	//.......
	}

子类可以新加一些方法,以针对子类实现相应的功能。

  • 方法的重载(比较特殊的添加)
    • 一个类中可以有几个同名的方法,这称为方法的重载。同时,还可以重载父类的同名方法。与方法覆盖不同的是,重载不要求参数类型相同。重载的方法实际是新加的方法。
	void sayHello(Student another){}

super的使用

  • 使用super访问父类的域(变量)和方法
    注:正是由于this可以访问父类的域和方法。但有时为了明确的指出父类的域和方法,就要用到关键字super
    例如:
class Person{
	String name;//字段
	int age;//字段
	void sayHello(){//方法
		System.out.println("Hello! My name is"+name);
		}
	}
class Student extends Person{
	String school;
	int score;
	boolean isGood(){return score>80;}
	void testThisSuper(){
		int a;
		a=this.age;//Student的age
		a=super.age;//Person的age(但这里的age指的是同一个age的只是为了方便区分子类和父类)
	} 
}
当然,使用super不能访问在子类中添加的域和方法
有时需要使用super以区别同名的域与变量。比如:当覆盖父类的同名方法的同时,又调用父类的方法,就必须用super。
class Person{
	String name;//字段
	int age;//字段
	void sayHello(){//方法
		System.out.println("Hello! My name is"+name);
		}
	}
class Student extends Person{
	int age; 
	String school;
	int score;
	boolean isGood(){return score>80;}
	void testThisSuper(){
		int a;
		a=this.age;
		a=super.age;
	} 
	void sayHello(){//调用父类的sayHello然后再加一些行为
		super.sayHello();
	 	System.out.println("My school is"+school);
	 }
}

在覆盖父类的方法的同时,又利用已经定义好的父类的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值