堆区:
栈区:
方法区:
例子:
更详细请看转载 https://blog.csdn.net/qq_26805137/article/details/52996910
这位小博主写得不错
5.1 引用类型变量画等号 =:
指向同一个对象。
5.2 基本类型变量画等号 =:
表示赋值。
- 超类(父类):派生类共有的属性和行为(成员变量和方法)。
- 派生类(子类):派生类所特有的属性和行为(成员变量和方法)。
People 类——超类 , Students01 类——派生类
在同一个包(package)中,子类自然地继承了其父类不是 private 的成员变量(私有成员变量)作为自己的成员变量,且还继承父类中不是 private 的私有方法作为自己的方法,继承过来的成员变量和方法的访问权限保持不变。
子类和父类不在同一个包中,父类的 private 和 友好的访问权限 的成员变量不会被子类继承。 子类只能继承父类修饰的 protected 和 public 访问权限的成员变量和方法。
如下图就是个好例子(父类和子类在同一个包 package):
同样:父类和子类不在同一个包时,子类只能继承父类的 protected (受保护的) 和 public (公开的) 的访问权限的成员变量和方法。
访问修饰符权限该知识,后续补上,感谢网友对我的文章认可!!
package test;
//人类
public class Peoples {
protected String name;
protected int age;
public void run(String name, int age){
System.out.println(name + "跑的很快,但他今年才"+ age +"岁");
}
}
package test;
//学生类
public class Students extends Peoples {
protected String name;
protected int age;
protected String str1;
public void run1(String name, int age, String str1){
System.out.println(name + "跑的很快,他今年才"+ age +"岁"+str1);
}
}
package test;
public class Test01 {
public static void main(String[] args){
Students stu = new Students();
stu.run("小明", 10);
stu.run1("小东", 20,"但他还是学生");
stu.run1("博尔特", 28,"但他是一名运动员");//重写run1方法
}
}
6.1 Java规定:构造派生类之前必须先构造超类。
如果超类(父类)不先构造,则派生类(子类)会报错
package test;
public class Peoples {
protected String name;
protected int age;
public void run(String name, int age){
System.out.println(name + "跑的很快,但他今年才"+ age +"岁");
}
public Peoples(String name, int age) {
super();
this.name = name;
this.age = age;
}
}
package test;
public class Students extends Peoples {
protected String name;
protected int age;
public void run1(String name, int age){
System.out.println(name + "跑的很快,但他今年才"+ age +"岁");
}
public Students(String name, int age) {
super(name, age);
}
}
package test02;
public class SuperDemo {
public static void main(String[] args) {
Boo b = new Boo(0, 0, 0);
Doo c = new Doo();
}
}
class Aoo {
int a;
Aoo(int a){ //构造方法
this.a = a;
System.out.println("超类的有参构造方法");
}
Aoo(int a,int c){ //方法的重载,方法名相同,参数列表和方法体不同
System.out.println("超类的有参构造方法111222");
}
Aoo(int a,int b,int c){ //方法的重载,方法名相同,参数列表和方法体不同
System.out.println("超类的有参构造方法111222333444");
}
void Coo() {
System.out.println("我是:"+a);
}
}
class Boo extends Aoo{
int c;
Boo(int a,int b, int c){
super(a,b,c);
this.c = c;
System.out.println("派生类的有参构造方法");
}
void Coo(){ //构造派生类之前必须先构造超类
System.out.println("我是:"+ a +"xxx");//方法的重写
}
}
class Coo{
Coo(int a){
System.out.println(a);
}
}
class Doo extends Coo{
Doo(){
super(5);
System.out.println("哈哈");
}
}
注意:重载看参数列表类型,重写看new(创建)对象
后续的内容请耐心等等,马上就来!写作不易请点个赞3Q
章节目录在此处:https://blog.csdn.net/qq_41254299/article/details/106638651
转载请注明出处:https://blog.csdn.net/qq_41254299
本文出自【Superclover_的博客】