JavaSE基础第8篇封装和继承
private关键字使用【private】修饰的私有属性只能在它所在类中被访问,如果外界想要访问私有属性,需要提供 公有方法,包括用于获取属性值的【getXxx()】方法和设置属性值的 【setXxx()】方法。set和get方法 都属于实例方法,不能带有static,实例方法的调用必须先【new】对象。使用 "引用."的方式调用。 get方法要求: public 返回值类型 get+属性名首字母大写(无参) { return xxx; } set方法要求: public void set+属性名首字母大写(参数) { xxx = 参数; } 符合JavaBean规范的类封装过程在Java中符合JavaBean规范的类封装的要求: 1.所有的成员变量都要私有化 ==> 使用"private"修饰 2.必须显式提供一个无参数的构造方法 3.要求给使用private修饰的成员变量提供对应的操作方法 ==> Setter Getterpublic class Application { public static void main(String[] args) { Person person = new Person(); //person.setAge(-19); // 对年龄判断,不合法 person.setAge(19); person.speak(); } } ================================== //Person类 public class Person { //属性私有封装,get/set private int age; //年龄 //无参构造方法 public Person() { } //有参构造方法 public Person(int age) { this.age = age; } //set和get方法 public int getAge() { return age; } public void setAge(int age) { //设立关卡 if (age > 120 || age < 0) { System.out.println("您输入的年龄不正确!"); }else { this.age = age; } } public void speak() { System.out.println("年龄:" + age + "岁了!"); } }多类合作在开发中,除了基本数据类型,大多数情况下,都是类对象操作数据,所以类可以作为 1.方法的参数 2.类定义时自定义类型作为成员变量数据类型匿名对象匿名对象: new 构造方法(必要的参数); 匿名对象的参数: 1.使用匿名对象直接调用类内的成员方法 2.匿名对象直接作为方法的参数 注意: 使用匿名对象不要操作成员变量,有可能有去无回继承在Java中,类的继承是类与类之间的关系,一个类为子类(也叫派生类),另一个类为父类(也叫基类),子类 继承父类,子类会自动拥有父类除构造方法以外的所有属性和方法,私有的也是可以继承的,只是子类 无法直接访问父类的私有属性。使用关键字 extends 表示继承 类与类之间继承的格式: class 子类名 extends 父类名 { //程序代码 } 注意事项: 1.在Java中,类只支持单继承,也就是说一个类只能有一个直接父类 2.多个类可以继承同一个父类 3.允许多层继承,就是一个类的父类可以再去继承另外的父类 4.子类和父类是一种相对概念,就是说一个类是某个类父类的同时也可以是另一个类的子类 5.Java中规定,子类继承父类,除构造方法不能继承外,其他都可以继承,但是私有的属性无法在子 类中直接访问 6.Java中的类没有显式的继承任何类,就默认的继承Object类,Object类是所有类的超类继承内存分析图
动物之间的继承案例//定义一个动物类 public class Animal { String name; public void shout() { System.out.println("动物在叫"); } } ============================== //定义一个 Dog类 继承 Animal类 public class Dog extends Animal { //定义一个打印名字的方法 public void printName() { System.out.println("名字是:" + name); } } ============================== //主方法 public class Application { public static void main(String[] args) { Dog dog = new Dog(); //实例化对象 dog.name = "二哈"; //赋值 dog.printName(); //调用dog对象的printName()方法 dog.shout(); //调用从Dog类继承下来的shout()方法 } }方法重写在继承关系中,子类会自动继承父类中的方法,有时因为继承的方法无法满足子类的具体需求,会对 从父类继承来的方法进行修改,也就是方法【重写】。子类中重写的方法需要和父类被重写的方法具 有相同的方法名,参数列表以及返回值类型。子类重写父类方法时,不能使用比父类中被重写的方法 更严格的访问权限。 方法重写注意事项: 1.两个类必须要有继承关系 2.方法名必须相同 3.参数列表必须相同 4.子类重写父类方法时,不能使用比父类更严格的访问权限 5.子类不能抛出比父类更大的异常class Animal { public void shout() { System.out.println("动物发出叫声"); } } =============================== //Dog类继承Animal类 class Dog extends Animal { //重写从父类继承来的方法 @Override public void shout() { System.out.println("汪汪......"); } } =============================== //主方法 public class Application { public static void main(String[] args) { Dog dog = new Dog();//创建Dog类的实例对象 dog.shout();//调用Dog类重写的shout()方法 } }