当前位置:   article > 正文

java继承相关知识_class b extends a class c extends b

class b extends a class c extends b

Java的三大特征:封装  继承  多态

Java继承:继承只能是单继承,只能有一个父类,但是可以多重继承。

class  A{

}

class B extends A{

}

class C extends B{

}这是多重继承

在中国而言继承的关系就是:儿子去继承父类的所有东西。

在代码中继承的语法格式:class  B   extends  A{

                                             可以继承父类所相关的属性和方法。

                                            }

使用关键字:extends关键字

  1. class B extends A{
  2. }
  3. B继承了A BA的儿子 AB的父亲 B可以继承父类A所有的东西
  4. class Person{
  5. String name;
  6. int age;
  7. double weight;
  8. //父类下面的方法
  9. public void eat(){
  10. System.out.println("在吃窝窝饭");
  11. }
  12. }
  13. class Man extends Person{
  14. }
  15. public class Demo1{
  16. public static void main(String[] args){
  17. Man man = new Man();
  18. man.name="鲜明";
  19. man.age=29;
  20. man.weight=12.2;
  21. System.out.println(man.name);
  22. System.out.println(man.age);
  23. System.out.peintln(man.weight);
  24. //使用对象.调用方法
  25. man.eat();
  26. }
  27. }

继承注意事项

成员变量:公开的和默认的成员变量,则子类可以继承父类的。 

                  私有化的成员变量则子类不可以继承。

成员方法:公开的和默认的成员方法,则子类可以继承父类。

                  私有化的成员方法,则子类不可以继承。

构造方法:如果父类中有有参构造,没有无参构造那么子类会报错。

                   如果父类中没有无参构造,那么子类也是不能有无参构造的。

                  先执行父类的构造方法,在执行子类的构造方法。

                  父类的构造方法必须和子类的构造方法保持一致。

在开发中遇到了私有化的变量和属性如何解决?

使用Set和Get进行赋值和取值。

  1. class Animal{
  2. private int age;//私有化的变量
  3. private String name;
  4. private double weight;
  5. public void setName(String name){
  6. this.name=name;
  7. }
  8. public String getName(){
  9. return name;
  10. }
  11. public void setAge(int age){
  12. this.age=age;
  13. }
  14. public int getAge(){
  15. return age;
  16. }
  17. public void setWeight(double weight){
  18. this.weight=weight;
  19. }
  20. public double getWeight(){
  21. return weight;
  22. }
  23. public void sleep(){
  24. System.out.println("动物在睡觉");
  25. }
  26. public void eat(){
  27. System.out.println("动物在吃饭");
  28. }
  29. }
  30. class Dog extends Animal{//Dog继承了变量Animal
  31. }
  32. public class Demo2{
  33. public static void main(String[] args){
  34. Dog dog = new Dog();
  35. dog.setAge(22);
  36. dog.setName("小明");
  37. dog.setWeight(100.0);
  38. System.out.println(dog.getName());
  39. System.out.println(dog.getAge());
  40. System.out.println(dog.getWeight());
  41. }
  42. }

构造方法

分为无参构造和有参构造

类中有无参构造和有参构造,当new对象的时候会自动匹配构造方法

  1. class Dog {
  2. public String name;//公开的成员变量
  3. int age;//默认的成员变量
  4. public void eat(){
  5. System.out.println("在吃饭");//公开的成员方法
  6. }
  7. void sleep(){
  8. System.out.println("默认的成员方法");
  9. }
  10. public Dog(){//构造方法是用来初始化类对象的,可以对属性进行的赋值,对象的创建就是依据构造方法来创建的。
  11. }
  12. public Dog(String name,int age){
  13. this.name=name;
  14. this.age=age;
  15. }
  16. }
  17. class Ca extends Dog{
  18. //小爱对着String name 22对照着的int age
  19. public Ca(String name,int age){//子类中的有参构造
  20. this.name=name;
  21. this.age=age;
  22. }
  23. }
  24. public class Demo3{
  25. public static void main(){
  26. Ca ca = new Ca("小爱",22);//当new ca的时候会对照着子类中的有参构造
  27. ca.name="小猫";
  28. ca.age=22;
  29. //结果为小猫 22 因为上面的赋值的早所以会被覆盖掉
  30. System.out.println(ca.name);
  31. System.out.println(ca.age);
  32. }
  33. }

继承的案例

  1. Animal 类:
  2. ​ 属性 : name, age ,sex 私有化的
  3. ​ 方法: 吃 运动
  4. ​ 子类:Panda
  5. ​ 使用Panda继承Animal 并可以使用Animal下面的所有属性和方法,对属性进行赋值
  6. ​ 方法调用
  7. class Animal{
  8. String name;
  9. int age;
  10. char sex;
  11. public void eat(){
  12. System.out.println("再吃");
  13. }
  14. public void sleep(){
  15. System.out.println("在运动");
  16. }
  17. }
  18. class Panda extends Animal{
  19. }
  20. public class Demo2{
  21. public static void eat(){
  22. panda.name="小动物";
  23. panda.age=20;
  24. panda.sex='男';
  25. System.out.println(panda.name);
  26. System.out.println(panda.age);
  27. System.out.println(panda.sex);
  28. //调用方法 对象.方法的名字
  29. panda.eat();
  30. panda.sleep();
  31. }
  32. }

override重写

重写的目的:子类可以继承父类的属性和方法,但是父类方法的需求已经满足不了子类了,则需要在子类中重写方法。

  1. override重写的用法
  2. class Person{
  3. String name;
  4. int age;
  5. double weight;
  6. public void eat(){
  7. System.out.println("在吃窝窝头");
  8. }
  9. public void sleep(){
  10. System.out.println("在睡觉");
  11. }
  12. }
  13. class Man extends Person{
  14. //父类的需求已经满足不了子类了,则需要重写
  15. public void eat(){
  16. System.out.println("再吃烤肠");
  17. }
  18. public void sleep(){
  19. System.out.println("在沙发上舒服的休息着");
  20. }
  21. }
  22. public class Demo3{
  23. public static void main(String [] args){
  24. Man man = new Man();
  25. //重写了父类的方法
  26. man.eat();
  27. man.sleep();
  28. man.name="洗脑";
  29. man.age=22;
  30. man.weight=100.0;
  31. System.out.println(man.age);
  32. System.out.println(man.name);
  33. System.out.println(man.weight);
  34. }
  35. }

overload重载

重载的目的:在同一个类中,方法的名字可以一样但是参数一定不一样,返回值可以一样也可以不一样。

  1. class Animal{
  2. public void eat() {
  3. System.out.println("再吃饭");
  4. }
  5. public void eat(String name) {
  6. System.out.println(name);
  7. }
  8. public void eat(int i) {
  9. System.out.println(i);
  10. }
  11. public void eat(double d1) {
  12. System.out.println(d1);
  13. }
  14. }
  15. public class Test6{
  16. public static void main(String[] args) {
  17. Animal animal = new Animal();
  18. animal.eat();
  19. animal.eat("小明");
  20. animal.eat(22);
  21. animal.eat(100.0);
  22. }
  23. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/78740
推荐阅读
相关标签
  

闽ICP备14008679号