java学习笔记(二)
类的继承
类的继承格式
class 父类 {
}
class 子类 extends 父类{
}
继承了之后有父类(非私有)的属性或方法
public class Animal{
public String name;
private int id;
public Animal(String myName,String myid){
//初始化属性值
}
public void eat{ }
public void sleep{ }
}
public class penguin extends Animal{
}
重写父类方法
public class Parent {
private int age;
public String name;
public int getAge() {
return age;
}
public void setAge(int age){
this.age=age;
}
public Parent(int age){
this.age=age;
}
public Parent(){
System.out.println("我是父类的myprint方法");
}
}
class Son extends Parent{
public Parent(){
System.out.println("我是子类的myprint方法");
}
public static void main(String[] args){
Son son=new Son();
son.name="zhangsan";
son.myPrint();
}
}
类的封装
将类的某些信息隐藏才类的内部,不允许外部程序直接访问,而是通过该类提供getter、setter的方法来对隐藏的信息进行操作和访问。
封装的实现步骤
(1)修改属性的可见性设为(private)
(2)创建getter/setter方法(用于属性的读写)
(3)在getter/setter方法中加入属性控制语句
public class Personn {
private String name;
private int age;
public int getAge() {
return age;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age=age;
}
public void setName(String name) {
this.name=name;
}
}
构造方法
— 定义
主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,宗与new运算符一起使用在创建对象的造句中,一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同来区分它们,即构造函数的重载。
重载
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name) {
this.name=name;
}
public Person(int age) {
this.age=age;
}
public Person(String name,int age) {
this.name=name;
this.age=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 Test {
public static void main(String[] args) {
Person person=new Person(name:"zhangsan",age=22);
// Person person=new Person();
// person.setName("zhangsan");
// person.setAge(22);
}
}
重载概念:
1.必须载同一个类中;
2.方法名相同;
3.方法的参数的个数、顺序或类型不同
4.与方法的修饰符和返回值没有关系
重写概念:当父类中的方法无法满足子类需求的时候,需要方法重写。
方法重写的注意事项:
1)重写的方法必须要和父类一模一样(包括返回值类型,方法名、参数列表)
2)重写的方法可以使用@override注解来标识
3)子类中重写的方法的访问权限不能低于父类中方法的访问权限
【权限修饰符:private < 默认(什么都不写) <protected < public】
public class Parent {
protected void myPrint() {
System.out.println("我是父类方法");
}
}
class Son extends Parent {
public void myPrint() {
System.out.println("我是子类方法");
}
}
class Test {
public static void main (String[] args) {
Son son=new Son();
son.myPrint();
}
}
重写与重载的区别?
方法的重载:在同一个类中,出现多个同名的方法,参数列表不同,与返回值类型。修饰符无关。
方法的重写:子类中出现和父类一模一样的方法(包括返回值类型、方法名、参数列表)