精华内容
下载资源
问答
  • 从书中看到子类继承父类,子类拥有父类所有的属性和方法,于是使用程序去验证,发现父类的私有属性和私有方法,子类是不能访问的,当然一些父类的私有属性可能可以通过相应的方法访问到,但是私有的方法似乎不能简单...

    从书中看到子类继承父类,子类拥有父类所有的属性和方法,于是使
    用程序去验证,发现父类的私有属性和私有方法,子类是不能访问的,当然一些父类
    的私有属性可能可以通过相应的方法访问到,但是私有的方法似乎不能简单的访问,
    这里暂不考虑Java反射机制,于是我分析,子类不能继承父类私有的属性及方法,但
    是分析了内存后,我发现我是错的,在一个子类被创建的时候,首先会在内存中创建
    一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类
    的对象。所以所谓的继承使子类拥有父类所有的属性和方法其实可以这样理解,子类
    对象确实拥有父类对象中所有的属性和方法,但是父类对象中的私有属性和方法,子
    类是无法访问到的,只是拥有,但不能使用。就像有些东西你可能拥有,但是你并不
    能使用。所以子类对象是绝对大于父类对象的,所谓的子类对象只能继承父类非私有
    的属性及方法的说法是错误的。可以继承,只是无法访问到而已。

    转载于:https://www.cnblogs.com/987m/p/11229816.html

    展开全文
  • Java子类继承父类

    千次阅读 2015-08-07 15:57:30
    1.子类继承父类,就继承了父类的方法和属性。 2.在子类中,可以使用父类中“public”和“protected”定义的方法和属性,也可以创建新的数据和方法;没有访问“private”定义的方法和属性的权限。 protected的使用...
    1.子类继承了父类,就继承了父类的方法和属性。

    2.在子类中,可以使用父类中“public”、“protected”和“缺省”(缺省时,.java文件必须要在同一个包内)定义的方法和属性,也可以创建新的数据和方法;没有访问“private”定义的方法和属性的权限。

    protected的使用方式:

    /**
     * Person.java
     */
    package com.iting.testProtect.vo;
    
    public class Person {
    	protected String name;
    	protected int 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;
    	}
    	
    	
    }
    

    /**
     * Student.java
     */
    package com.iting.testProtect.vo;
    
    public class Student extends Person {
    	private String school;
    
    	public String getSchool() {
    		return school;
    	}
    
    	public void setSchool(String school) {
    		this.school = school;
    	}
    
    	public Student(String name , int age , String school) {
    		this.name = name;
    		this.age = age;
    		this.school = school;
    	}
    
    	@Override
    	public String toString() {
    		return "Student [school=" + school + ", name=" + name + ", age=" + age
    				+ ", getSchool()=" + getSchool() + ", getName()=" + getName()
    				+ ", getAge()=" + getAge() + ", getClass()=" + getClass()
    				+ ", hashCode()=" + hashCode() + ", toString()="
    				+ super.toString() + "]";
    	}
    	
    	
    }
    

    /**
     * Main.java
     */
    package com.iting.testProtect.main;
    
    import com.iting.testProtect.vo.Student;
    
    public class Main {
    	public static void main(String[] args) {
    		Student student = new Student("阿呆",18,"集美大学");
    		System.out.println(student.toString());
    	}
    
    }
    



    3.在Java 中,继承的关键字用的是“extends”,即子类不是父类的子集,而是对父类的“扩展”。




    4.一个子类只能有一个父类,然而,一个父类可以有多个子类。


    5.重写继承的方法的相关问题:

    /**
     * Person.java
     */
    package com.iting.testProtect.vo;
    
    public class Person {
    	
    	private void working() {
    		System.out.println("上班");
    	}
    	
    	protected void eat() {
    		System.out.println("吃白米饭");
    	}
    	
    	public void walking() {
    		System.out.println("随便走");
    	}
    }
    

    /**
     * Student.java
     */
    package com.iting.testProtect.vo;
    
    public class Student extends Person {
    	
    	/*这不是重写,Student并没有获得Person的working()方法的权限*/
    	public void working() {
    		System.out.println("上学");
    	}
    	
    	/*这是重写,子类方法的权限必须 >= 所重写的父类方法的权限*/
    	public void eat() {
    		System.out.println("喝粥");
    	}
    	
    	/*非法,子类中的walking()方法的访问权限private比被覆盖方法的访问权限public弱*/
    	private void walking() {
    		System.out.println("蹦蹦跳跳");
    	}
    }
    


    展开全文
  • 用学生的输出为例子,子类继承父类,然后在子类中新定义一个属性并可以给父类属性赋值,以及重写tostring和重写equals方法。 demo测试 package Student; public class demo { public static void main(String[] ...

    用学生的输出为例子,子类继承父类,然后在子类中新定义一个属性并可以给父类属性赋值,以及重写tostring和重写equals方法。
    在这里插入图片描述
    demo测试

    package Student;
    
    public class demo {
    
        public static void main(String[] args) {
    	// TODO Auto-generated method stub
    
    	Undergraduate s1 = new Undergraduate("张三", 30, "专科");
    
    	Undergraduate s2 = new Undergraduate("张三", 30, "本科");
    	Undergraduate s3 = new Undergraduate("张三", 30, "本科");
    	System.out.println(s1.equals(s2));
    	System.out.println(s3.equals(s2));
    	System.out.println(s1);
    	System.out.println(s2);
    	System.out.println(s3);
    
        }
    
    }
    
    

    父类定义属性

    package Student;
    
    public class Student {
        public String name;
        public int age;
    
        public Student() {
    	// TODO Auto-generated constructor stub
        }
    
        public Student(String name, int age) {
    	this.name = name;
    	this.age = age;
        }
    
        public void show() {
    	System.out.println(name + "," + age);
    
        }
    
    }
    
    

    子类定义新属性,重写函数

    package Student;
    
    public class Undergraduate extends Student {
        public String degrre;
    
        public Undergraduate(String name, int age, String degrre) {
    	super(name, age);
    	this.degrre = degrre;
        }
    
        @Override
        public int hashCode() {
    	final int prime = 31;
    	int result = 1;
    	result = prime * result + ((degrre == null) ? 0 : degrre.hashCode());
    	return result;
        }
    
        @Override
        public boolean equals(Object obj) {
    	if (this == obj)
    	    return true;
    	if (obj == null)
    	    return false;
    	if (getClass() != obj.getClass())
    	    return false;
    	Undergraduate other = (Undergraduate) obj;
    	if (degrre == null) {
    	    if (other.degrre != null)
    		return false;
    	} else if (!degrre.equals(other.degrre))
    	    return false;
    	return true;
        }
    
        @Override
        public String toString() {
    	return "degrre=" + degrre + ", name=" + name + ", age=" + age + "";
        }
    
        public void show() {
    	System.out.println(name + "," + degrre + "," + age);
    
        }
    }
    

    运行结果展示
    在这里插入图片描述

    展开全文
  • 使用Lombok子类继承父类父类属性不生效 子类增加: @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) @Data @Entity @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) ...

    使用Lombok子类继承父类,父类属性不生效

    子类增加:

    @ToString(callSuper = true)
    @EqualsAndHashCode(callSuper = true)
    
    @Data
    @Entity
    @ToString(callSuper = true)
    @EqualsAndHashCode(callSuper = true)
    public class SysRights extends BaseEntity {
        @Id
        @GeneratedValue(generator = "uuid")
        @GenericGenerator(name = "uuid", strategy = "uuid2")
        private String rightsId;
        private String rightsName;
        private String rightsUrl;
        private String rightsIcon;
    }
    
    

    问题解决
    在这里插入图片描述

    展开全文
  • lombok子类继承父类属性问题

    千次阅读 2019-12-21 19:27:40
    继承时的@Data 我们知道@Data注解在类,为类的所有字段注解@ToString、@EqualsAndHashCode、@Getter的便捷方法,同时为所有非final字段注解@Setter。 要注意@EqualsAndHashCode注解与@ToString注解默认情况下是...
  • 在之前的博文JAVA中子类继承父类时构造方法的继承问题中,我们已经了解到了当子类对象实例化的时候,调用子类构造方法之前,会先调用父类的构造方法,在继承的机制中,创建一个子类对象,同样会创建一个父类子对象,...
  • public abstract class Parent { String name = "parent" ; } ...可以看出,子类中的属性的引用指向的是父类属性的地址。 转载于:https://www.cnblogs.com/yzjT-mac/p/6229625.html
  •  我们知道当子类继承父类时,会覆盖父类中和子类同名的方法和属性,前提这些方法和属性不是私有的,下面让我们看一段代码如下   class A{ public int num = 1 ; public String name="A"; ...
  • java子类修改父类属性的值

    万次阅读 2015-11-12 16:39:16
    父类的非private属性子类可以在自己的构造方法中用“super”来更改属性值。 父类: public class XuanSou { int sudu; public int getSudu() { return sudu; } public void setSudu(int sudu) { this....
  • 子类继承父类 A、子类实例化,堆中子类对象包含子类的属性、方法和父类的属性方法 B、如果有覆盖,则取子类的属性、方法 C、如果父类中有子类不包含的属性、方法,则子类对象中会包含这些父类的属性、方法 D、...
  • Java 子类继承父类静态属性后,两者是共享的 public class Father{ protected static String money; protected String getMoney(){ return money; } } public class Son extends Father{ public static ...
  • 今天和朋友聊到scala继承的时候,发现有一些问题,我
  • 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 Java 子类强转父类 父类引用指向子类对象: java中子类强转父类,实际上依然是...
  • 1: JAVA-傻子(373481014) 15:12:26  1.同名的实例方法被覆盖 ,同名的静态...2.隐藏 和覆盖 的区别在于,子类对象转换成父类对象后,能够访问父类被隐藏 的变量和方法,而不能访问父类被覆盖 的方法 3.如
  • Java里面子类父类属性覆盖问题缘由经过百度之后,这可能是一个被我忽略的问题 缘由 这是因为本人在写几个设计模式的时候用到一个代码片段的时候,使用了如下代码 public class Power { int power; } public ...
  • /** * */ package extends1; /** @author sq @date 2020年6月9日 @Desription: TODO / class Test{ String name=“123”; int age=18; /* */ public Test() { ...public Test(String name,
  • 1.首先,我们都知道子类继承父类会继承父类的非private属性和方法。 2.接下来我有个疑问,父类继承了一个祖父类,子类再继承父类,子类继承祖父类吗? 先说答案,是的,子类也会继承祖父类 //祖父类 public class ...
  • 问题描述:持久类父类属性如下 @Data //lombok注解 @Accessors(chain = true) //lombok注解链式写法 public abstract class BaseEntity implements Serializable { @ApiModelProperty("创建人") private Long ...
  • java子类继承父类后可以直接使用父类中的方法,而无需先定义对象 例如使用父类的getName()方法: public class Animal { private String name; public Animal(String name){ this.name=name; } public ...
  • java子类父类继承

    2019-11-07 08:35:39
    继承子类调用super()无参构造器;举个例子: 最好理解执行内存图; 1、.java文件编译完之后 在内存中后会个代码区存放; 2、主函数 main放里面的代码按顺序执行,main()进栈 -ZIDemo zi=new ZiDemo()进堆内存...
  • 子类可以继承父类属性值,后续操作互不影响。 静态属性: public class Main7 extends Father{ //static int test = 11; public static void main(String[] args) { test++; Father father = new Father...
  • 案例一 试想一下代码的执行结果 ... public class A { public static void main(String[] args) { FatherClass father = new FatherClass();... System.out.println(father.info);... SonClass son = new ...
  • 子类继承父类,在用new关键字创建子类对象时,父类比子类在堆中先创建,子类通过super关键字去继承父类的方法。子类通过拥有父类的地址通过set和get方法去修改和获取属性的值。 ...
  • 继承father类的show方法时本该显示c的number属性的地方显示了father类属性的初始值。 但若直接重写方法,C的number无异常。 想请教这个代码中的super.show()是否是我用错了 以下为主代码 ``` import java...
  • 子类继承父类的加载顺序详解

    千次阅读 2019-01-09 21:34:35
    二:子类继承父类的加载顺序 一:单独类的加载顺序 静态变量、静态代码块(从上到下的顺序加载) 类的非静态变量,非静态块(从上到下的顺序加载) 构造函数 二:子类继承父类的加载顺序 父类静态变量、父类...
  • 当有相同的属性或者方法是this子类表示调用自己的属性或者方法, super调用父类属性或者方法。 当子类调用的属性方法在子类中不存在时,那么this和super都是调用父类属性或者方法...
  • 子类不能继承父类的构造器,但是在子类生成实例的时候必然会先调用父类的构造器,也就是在子类的构造器中必然会显式或者隐式地调用父类的构造器;若父类的构造器是不带参的,则在子类的构造器中不必要显式地调用父类...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 156,331
精华内容 62,532
关键字:

java子类继承父类属性

java 订阅