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