JavaSE之面向对象编程-类与对象(下)
本篇由一道阿里的Java校招笔试题开始 ~
public class HelloA {
//构造方法
public HelloA(){
System.out.println("Hello A!父类构造方法");
}
//非静态代码块
{
System.out.println("i'm A class.父类非静态代码块");
}
//静态代码块
static{
System.out.println("static A 父类静态代码块");
}
}
class HelloB extends HelloA {
//构造方法
public HelloB(){
System.out.println("Hello B! 构造方法");
}
//非静态代码块
{
System.out.println("i'm B class.非静态代码块");
}
//静态代码块
static{
System.out.println("static B 静态代码块");
}
public static void main(String[] args) {
System.out.println("---start---");
new HelloB();
new HelloB();
System.out.println("---end---");
}
}
上述代码输出结果:
static A 父类静态代码块
static B 静态代码块
---start---
i'm A class.父类非静态代码块
Hello A!父类构造方法
i'm B class.非静态代码块
Hello B! 构造方法
i'm A class.父类非静态代码块
Hello A!父类构造方法
i'm B class.非静态代码块
Hello B! 构造方法
---end---
相关代码展示如下:
1、普通代码块
public class Test{
public static void main(String[] args) {
{ //直接使用{}定义,普通方法块
int x = 10 ;
System.out.println("x = " +x);
}
int x = 100 ;
System.out.println("x = " +x);
}
}
2、构造块
class Person{
{ //定义在类中,不加任何修饰符,构造块
System.out.println("1.Person类的构造块");
}
public Person(){
System.out.println("2.Person类的构造方法");
}
}
public class Test{
public static void main(String[] args) {
new Person();
new Person();
}
}
3、非主类中的静态代码块
class Person{
{ //定义在类中,不加任何修饰符,构造块
System.out.println("1.Person类的构造块");
}
public Person(){
System.out.println("2.Person类的构造方法");
}
static { //定义在非主类中的静态块
System.out.println("3.Person类的静态块");
}
}
public class Test{
public static void main(String[] args) {
System.out.println("--start--");
new Person();
new Person();
System.out.println("--end--");
}
}
4、继承的实现
class Person{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
class Student extends Person{
//定义了一个子类
}
public class Test {
public static void main(String[] args) {
Student student = new Student();
student.setName("Steven");
student.setAge(18);
System.out.println("姓名:"+student.getName()+",年龄:"+student.getAge());
}
}
5、方法覆写
class Person{
public void print(){
System.out.println("1.[Person]类的print方法");
}
}
class Student extends Person{
public void print(){
System.out.println("2.[Student]类的print方法");
}
}
public class Test{
public static void main(String[] args) {
new Student().print();
}