java之面向对象
原创
©著作权归作者所有:来自51CTO博客作者zizhilian2015的原创作品,请联系作者获取转载授权,否则将追究法律责任
方法:一个类包含多个方法和实例字段
构造方法
public class Main {
public static void main(String[] args) {
Person p = new Person("Xiao Ming", 15);
System.out.println(p.getName());
System.out.println(p.getAge());
}
}
/**
* Person类
* 类名相同的方法是构造方法
*/
class Person {
private String name;
private int age;
/**
* 与类名相同的方法是构造方法
*/
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
}
方法重载:方法名相同,但各自的参数不同,称为方法重载(Overload
)。下面代码中2个hello,就是方法重载
class Test {
public void hello() {
System.out.println("Hello, world!");
}
public void hello(String name) {
System.out.println("Hello, " + name + "!");
}
public void hello(String name, int age) {
if (age < 18) {
System.out.println("Hi, " + name + "!");
} else {
System.out.println("Hello, " + name + "!");
}
}
}
继承:指从一处拿过来直接使用,为了说明两者至之间的关系。拿的一方为(子类Student),被拿的一方为(父类Person)。一个类只能继承一个类,就像一个儿子只有有一个爹,爹多了妈有问题。
class Person {
private String name;
private int age;
public String getName() {...}
public void setName(String name) {...}
public int getAge() {...}
public void setAge(int age) {...}
}
class Student extends Person {
// 不要重复name和age字段/方法,
// 只需要定义新增score字段/方法:
private int score;
public int getScore() { … }
public void setScore(int score) { … }
}
super
关键字表示父类(超类)。子类引用父类的字段时,可以用super.fieldName
。例如:
class Student extends Person {
public String hello() {
return "Hello, " + super.name;
}
}
这里使用super.name
,或者this.name
,或者name
,效果都是一样的。在Java中,任何class
的构造方法,第一行语句必须是调用父类的构造方法。如果没有明确地调用父类的构造方法,编译器会帮我们自动加一句super();
但是,Person
类并没有无参数的构造方法,因此,编译失败。
在继承关系中,子类如果定义了一个与父类方法签名完全相同的方法,被称为覆写(Override)。
包作用域是指一个类允许访问同一个package
的没有public
、private
修饰的class
,以及没有public
、protected
、private
修饰的字段和方法。
JVM通过环境变量classpath
决定搜索class
的路径和顺序;
不推荐设置系统环境变量classpath
,始终建议通过-cp
命令传入;
jar包相当于目录,可以包含很多.class
文件,方便下载和使用;
MANIFEST.MF
文件可以提供jar包的信息,如Main-Class
,这样可以直接运行jar包。