1.1public类的直接访问
class Person{
public int age;//r如果用private就必须调用get和set方法
public String name;
}
public class Gouzaofangfa {
public static void main(String args[]) {
Person a=new Person();//声明并且初始化
a.age=30;
a.name="Marry";
System.out.println(a.age+a.name);
}
}
输出:30 marry
1.2private类的方法访问
*构造方法无返回类型
*方法名与类名一致
class Person1{
private int age;//r如果用private就必须调用get和set方法
private String name;
public void Person1() {
System.out.println(age+" "+name);//未设值默认为0和null
}
}
public class Gouzaofangfa1 {
public static void main(String args[]) {
Person1 a=new Person1();//声明并且初始化
a.f();
}
}
输出:0 null
1.3直接赋初始值
public int age;//r如果用private就必须调用get和set方法
public String name;
public Person2(int _age,String _name) {//不能有返回类型
age=_age;
name=_name;
System.out.println(age+" "+name);
}
}
public class gouzaofangfa32{
public static void main(String args[]) {
Person2 a=new Person2(30,"老王");//声明并且初始化
}
}
输出30 老王
默认构造方法及其引用顺序
创建一个子类的对象实例的时候,必先调用父类的无参数的构造函数(默认构造函数),假如父类有带参数的构造函数,那么系统将不会给它创建无参数的构造函数,这时,子类在实例化的时候,因为找不到父类的默认构造函数,编译器将会报错,但如果在子类的构造函数中指定用父类的带参数的构造函数的时候,或者在父类中加一个无参数的构造函数,就不会报错。
package com.fourth;
/*默认构造方法:
* 子类中含有默认构造方法父类中也必须含有
*/
class A {
public A() {
System.out.println("执行了A的默认构造方法");
}
}
class B {
public B() {
System.out.println("执行了B的构造方法");
}
public void show() {
// TODO Auto-generated method stub
}
}
class C extends A {
public C(B b) {//调用的时候把main方法中b的地址传到这里 B b=new B();
System.out.println("执行了C的构造方法");//相当于b.C(b)
}
}
/*先执行形式参数是引用类型的调用
* 在执行父类默认构造方法
* 在执行自己的默认构造方法
*
*/
public class Text1 {
public static void main(String[] args) {
B b=new B();
C c=new C(b);
}
}