继承与构造方法与对象数组

1.私有属性不能通过创建对象来调用,只能通过利用创建方法来调用

package JiCheng;

public class Privatee {
	private String name;
	public void setName(String name){
		this.name=name;
	}
	public String getname(){
		return this.name;
	}
	public static void main(String[] args) {
		Privatee p=new Privatee();
		p.setName("yy");
		System.out.println(p.getname());

	}

}


yy

2.方法的重写与重载

                                重写(继承中)                                       重载(一个类中)

修饰符                   不能比父类的小                                        没要求

返回值                  和父类一样                                                 没要求

方法名                    一样                                                          一样

参数列表                 一定一样                                                  一定不一样

                               父子类                                                        一个类

package JiCheng;

public class A {
	public int z;
	public int add(int x,int y){
		 return z=x+y;
	}
	public double add(double y,double x){
		return x+y;
	}
	public static void main(String[] args) {
		A a=new A();
		System.out.println(a.add(1,2));
		System.out.println(a.add(1.1,2.2));

	}

}


 

package JiCheng;

public class B extends A {
	public int add(int x,int y){
		 return z=x+2*y;
	}
	public double add(double y,double x){
		return x+2*y;
	}
	public static void main(String[] args) {
		B b=new B();
		System.out.println(b.add(1,2));
		System.out.println(b.add(1.1,2.2));

	}

}

方法的重载:

参数个数差异

参数顺序差异

参数类型差异

变量名称不算差异

3.继承

创建子类对象时,创建父类对象

方法调用时,先找自己的,自己没有,再找父类的

属性:(向上查找)

传递继承结构不要太复杂,否则浪费空间

package JiCheng;

public class A {
	public A(){
		System.out.println("我是A类的构造方法");
	}
	public void testA(){
		System.out.println("TestA!");
	}
	public static void main(String[] args) {
		

	}

}


 

package JiCheng;

public class B extends A {
	public B(){
		System.out.println("我是B类的构造方法");
	}
	public static void main(String[] args) {
		B b=new B();
		b.testA();

	}

}


 

   属性与方法不同:

方法在调用时,如果子类重写了父类的方法,父类方法调用时用子类重写的方法(因为父类的原方法已经不能满足需要)

package JiCheng;

public class A {
	
	public void testA(){
		System.out.println("TestA!");
		this.test();
	}
	public void test(){
		System.out.println("父类构造方法");
	}
	public static void main(String[] args) {
		

	}

}


 

  • package JiCheng;
    
    public class B extends A {
    	
    	public void test(){
    		System.out.println("子类构造方法");
    	}
    	public static void main(String[] args) {
    		B b=new B();
    		b.testA();
    
    	}
    
    }
    


    结果:TestA!
               子类构造方法

    2.子类:test();

     父类:test();

    爷爷类:testA(this.test())
                   test();

    结果:用的是子类的test();

4.super()

子类中调用父类的构造方法

package JiCheng;

public class A {
	
	public A(int x){
		System.out.println(10);
	}
	public A(){
		System.out.println(100);
	}
	public static void main(String[] args) {
		

	}

}


 

package JiCheng;

public class B extends A {
	public B(){
		super(10);
	}
	public void test(){
		System.out.println("子类构造方法");
	}
	public static void main(String[] args) {
		B b=new B();
		b.test();

	}

}


 

结果:10
子类构造方法

在创建子类对象时,会调用父类的构造方法,如果未显式声明,调用默认的,显式声明的话,调用带参数的;

5.修饰符

                                                          子类            同包                    其他

public                   可以            可以                      可以

protected               可以          可以                     不可以

默认                     不可以          可以                     不可以

private                 不可以           不可以                   不可以

 

6.对象数组

package 对象数组;

public class Person {
	private String name;
	private int age;
	public Person(String name,int age){
		this.name=name;
		this.age=age;
	}
	public void setName(String name){
		this.name=name;
	}
	public String getName(){
		return this.name;
	}
	public static void main(String[] args) {
		

	}

}


 

package 对象数组;

public class test {

	public static void main(String[] args) {
		Person p=new Person("aa",20);
		Person p1=new Person("bb",30);
		Person p2=new Person("cc",40);
		Person p3=new Person("dd",50);
		Person[] person_array={p,p1,p2,p3};
		Person px=person_array[0];
		px.setName("ee");
		System.out.println(px.getName());
		for(Person ps:person_array){
			System.out.println(ps.getName());
		}
		
		

	}

}


结果:ee
ee
bb
cc
dd
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值