import java.util.Arrays;
import java.util.Scanner;
/**
*
*/
/**
* @author 男神许老师
*2020年1月1日
*
*/
//class Student{
// public int age;
// public String name;
// public Student() {
// System.out.println("this is a student");
// }
// public Student(String name) {
// this();
// this.name=name;
// }
//
//}
//public class new1 {
// public static void main(String[] args) {
// Scanner sc=new Scanner(System.in);
// //面向对象程序设计三大特性:封装、继承、多态
// //java中可以通过this调用已经存在的构造方法
//
// Student a=new Student();
// Student b=new Student("许远志");
// System.out.println(a.name);
// System.out.println(b.name);
//// int a;
//// while(sc.hasNext()) {
//// a=sc.nextInt();
//// System.out.println(2<<a-1);
////// }
//// double a=10.0;
//// final int b=5;//java 中使用关键字final来定义常量
//// // System.out.println(3==5);
//// // b=20;
//// int arr[]= {2};//静态初始化
//// int arr1[]=new int[1];//动态初始化
// // arr1=arr;
// // arr1[0]=2;
//
// //基本数据类型比较直接比较数值,引用数据类型比较直接比较地址
// // System.out.println(arr.equals(arr1));
// //equals 可以只可以比较引用数据类型,方法可以重写
// //==既可以比较基本数据类型又可以比较引用数据类型
// // System.out.println(arr[0]==arr1[0]);
//// int arrays[][];//二维数组
//// Arrays.sort(arr);
//// System.out.println(arr[1]);
//// System.out.println(Arrays.binarySearch(arr,2));
// //值传递不会改变参数的值
//// int a=3;
//// System.out.println("改变之前:"+a);
//// tri(a);
//// System.out.println("改变之后:"+a);
//// //引用传递会改变参数的值
//// int arr[]= {1,2,3};
//// System.out.println("改变之前:"+Arrays.toString(arr));
//// fun(arr);
//// System.out.println("改变之后:"+Arrays.toString(arr));
////方法重载:同一个类中两个或以上的同名方法,参数类型,个数或顺序不同,称为方法的重载
// }
//// public static void tri(int a) {
//// a=a*3;
//// }
//// public static void fun(int arr[]) {
//// for(int i=0;i<arr.length;i++) {
//// arr[i]+=1;
//// }
// }
//}
//继承
//一个类只能有一个直接基类
//final 修饰的类不能有派生类,String 是典型特例
class Student{
public int age;
public String name;
public Student(int age,String name) {
this.age=age;
this.name=name;
}
public void print() {
System.out.println("你好");
}
}
//派生类内不能访问基类中private修饰的属性或方法
class BigStudent extends Student{
public String major;
public BigStudent() {
super(25,"龟男");//调用基类的构造方法,可以有参数也可以无参数
//super 用于引用基类中的属性或方法super.属性,super.方法
//this 用于引用本类中的属性或方法 this.属性,this.方法
this.major=super.name;
}
//派生类对基类中定义的方法进行重新实现称为方法重写
//重写只能出现在继承之中
public void print() {
System.out.println("啦啦啦");
}
}
public class new1 {
public static void main(String[] args) {
Student a=new Student(12,"嘴男");
Student b=new BigStudent();
// System.out.println(a.age+b.age);
// System.out.println(a.name+b.name);
// System.out.println(b.major);
a.print();
b.print();
}
}