Java程序设计基础------类与对象(二)

一个类的公有成员和私有成员有什么区别?

公有成员不仅可以被类自身访问,还可以被所有其他类访问

私有成员无法从该类的外部访问该类的内部成员,只能被该类自身访问和修改,也不能被其他类访问或者引用 

什么是方法重载?什么是方法重写?

重载是指一个类内有多个相同名称的方法,这多个同名方法如果参数个数不同,或者是参数个数相同但是参数类型不同。则这些同名方法就有不同的功能。

重写:在子类中定义名称,参数个数,与类型均在父类中完全相同的方法,用以重写父类中同名方法的功能。

区别:

1>都要求方法名相同,都可以用于抽象方法和非抽象方法之间
2>重写要求参数列表必须一致,而重载要求参数列表必须不一致
3>重写要求返回类型必须一致,而重载对此不做限制
4>重写只能用于子类重写父类的方法,而重载用于同一个类的所有方法(包括从父类中继承而来的方法)
5>重写对方法的访问修饰符有特殊要求,而重载对此不做限制
6>父类的一个方法只能被同一个子类重写一次,而一个方法在所在的类中可以被重载多次
7>构造方法能被重载,但不能被重写

一个类的构造方法的作用什么?构造方法的特性是什么?

构造函数是为了创建对象而存在,并为对象属性初始化的特殊方法。

特性:

1>构造方法的名称必须和类名相同;
2>构造方法没有返回类型约定,可以有参数列表,只是为了创建对象而存在,并为对象属性初始化的特殊方法;
3>当我们创建一个类的时候,如果我们不手动添加构造方法,那么系统会自动为我们提供一个默认的不带参的构造方法;       如果我们手动添加了构造,则系统不会提供默认的构造了。
4>构造方法可以重载,通过调用不同的构造方法来表达对象的多种初始化行为。构造方法的重载是指定义多个形式参数列       表不同的构造方法。

静态变量和实例变量的区别?

静态变量是指用static关键字修饰的成员变量,他在类装载的时候就进行了初始化,并且永驻内存,可通过类名来访问,不需创建对象;实例变量是指没有用static关键字修饰的成员变量,它只有在类创建对象的时候才初始化,它只能在类创建对象后,通过对象才可以访问。

静态方法和实例方法的区别?

 静态方法属于整个类的方法,所以静态方法可以被实例对象和类调用,实例方法属于某个具体对象的。必须先创建实例对象,然后通过实例对象调用实例方法。

在一个静态方法内可以调用一个非静态成员吗?为什么?

 不可以。因为静态方法属于整个类的,所以他不能操纵某个对象的成员,所以静态方法只能访问静态变量和静态方法。

什么是静态化初始器?其作用是什么?他与构造方法的区别是什么?

 静态化初始器是由关键字static修饰的一对{}括起来的语句组。

作用与足区别:

1.构造方法是对每个新建的对象进行初始化,而静态化初始器是对类自身进行初始化。

2.构造方法是在new运算符创建新对象时由系统自动调用,而这个是在它所属类加入内存时被系统调用执行的。

3.用new创造多少个对象就执行多少次构造方法,而这个只在他所属的类被加载进内存时执行一次。

4不同于构。造方法,这个不是方法,因而没有方法名,返回值,和参数。

最后写个学生类

package code_class;

public class define_class {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
		Student s1 = new Student();
		s1.setName("张三");
		s1.setAge(23);
		System.out.println(s1.getName()+"..."+s1.getAge());
		System.out.println("-----------------------------------");
		Student s2 = new Student("里斯",24);
		System.out.println(s2.getName()+"..."+s2.getAge());		
	}

}

class Student{
	private String name;    //私有属性  姓名 成员属性
	private int age;		//私有属性  年龄  成员属性
	
	public Student() {}  //空参构造
	
	public Student(String name,int age) {  //有参构造
		this.name = name;      //this的作用是为了区分成员变量和局部变量
		this.age = age;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getAge() {
		return age;
	}
}

猜你喜欢

转载自blog.csdn.net/yanzhiguo98/article/details/88423849