JAVA中Java中private、protected、public和default的区别
**public:**具有最大的访问权限,可以访问任何一个在classpath下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。
**protected:**主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西
**default:**有时候也称为friendly,它是针对本包访问而设计的,任何处于本包下的类、接口、异常等,都可以相互访问,即使是父类没有用protected修饰的成员也可以。
private:
访问权限仅限于类的内部,是一种封装的体现,例如,大多数成员变量都是修饰符为private的,它们不希望被其他任何外部的类访问。
构造方法
构造方法作用就是对类进行初始化。每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认不带任何参数的构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
class Person //人类{
public Person(String n,int a) //构造方法
{
name = n; age = a;
}
private string name;
private int age;
}
public static void main(String[] args){
Person p = new Person("张三",14);//这就是作用
}
方法的重载
在Java程序中,如果同一个类中存在两个方法同名,方法的签名(参数个数、参数类型、类型排列次序)上也一样,将无法编译通过。 但在Java中多个方法重名是允许的,只要保证方法签名不同即可,这种特性称为方法重载(overload)。
class MyClass {
int height;
MyClass() {
System.out.println("无参数构造函数");
height = 4;
}
MyClass(int i) {
System.out.println("房子高度为 " + i + " 米");
height = i;
}
void info() {
System.out.println("房子高度为 " + height + " 米");
}
void info(String s) {
System.out.println(s + ": 房子高度为 " + height + " 米");
}
}
public class MainClass {
public static void main(String[] args) {
MyClass t = new MyClass(3);
t.info();
t.info("重载方法");
//重载构造函数
new MyClass();
}
}
Java中的继承
继承是Java面向对象编程技术的一块基石,它允许创建分等级层次的类。运用继承,可以创建一个通用类定义一系列一般特性。该类可以被更具体的类继承。
被继承的类称为父类
继承父类的类称为子类
执行继承时,子类将获得父类的属性,并具有自身特有的属性。
extends关键字用于继承类。声明一个继承父类的类的通常形式如下:
class 父类 {
}
class 子类 extends 父类 {
}
没有extends,默认父类为Object
只能有一个父类,即单继承
子类继承父类的全部成员,除了private成员
子类与父类不在同包,使用默认访问权限的成员不能被继承
构造方法不能被继承