方法:
public class Main {
public static void main(String[] args){
System.out.println(sum(1,2,3));
int a[]=new int [50];
fill(a,99);
System.out.println(a[49]);
}
public static int sum(int a,int b,int c){
return a+b+c;
}
public static void fill(int[] array,int value){
if(array==null) return; // return when array is empty
int len=array.length;
for(int i=0;i<len;i++){
array[i]=value;
}
}
}
构造方法:
public class Main {
public static void main(String[] args){
Student hanker = new Student("wch",19,"20182798",'F',1); //此时已经不存在默认的无参构造方法
System.out.println(hanker.getName());
hanker.setRank(0);
hanker.show();
System.out.println(Student.school);//静态对象是所有对象公用,在内存中只占有一份内存
System.out.println(Student.getSchool());
}
}
class Student{
public static String school = "CTYZ";
private String name;
private int age;
private String id;
private char gender;
private int rank;
public void show(){
System.out.print("name: "+name+" age: "+age+" id "+id+" gender: "+gender+" rank "+ rank);
System.out.println();
}
public Student (String name,int age,String id,char gender,int rank){
this.name=name; this.age=age; this.id=id; this.gender=gender; this.rank=rank;
}//构造方法 无返回值 函数名与类名一致
public String getName(){
return name;
}
public void setRank(int rank){
this.rank=rank;
}
public static String getSchool(){ //静态方法只能访问静态变量
return school;
}
}
class Teacher{
String name;
int age;
String id;
char gender;
int rank;
public void show(){
System.out.print("name: "+name+" age: "+age+" id "+id+" gender: "+gender+" rank "+ rank);
System.out.println();
}
}
JAVA自带的工具类的方法都是Static方法,这样可以不用声明工具类的对象便可使用其中的类方法,下面我们试着自定义一些工具类
自定义数组工具类:
import java.util.Arrays;
class Main{
public static void main(String [] args){
int arr[] = new int[20];
Arrays.fill(arr,100); //使用util
System.out.println(arr[0]);
ArrayTool.fill(arr,99); //使用自定义
System.out.println(arr[0]);
}
}
class ArrayTool{
private ArrayTool(){} // 构造方法私有化 防止声明对象
public static void fill(int []arr,int value){
int len=arr.length;
for(int i=0;i<len;i++)
arr[i]=value;
}
}
自定义String工具类
class Main{
public static void main(String [] args){
String str="I am so handsome. I'm so cool.";
System.out.println(StringTool.indexOf(str,'l'));
}
}
class StringTool{
private StringTool(){}
public static int indexOf(String str,char ch){
int len = str.length();
int index = -1;
for(int i=0;i<len;i++)
if(str.charAt(i)==ch){ //JAVA中string不支持下标访问
index=i; break;
}
return index;
}
}
使用idea将StringTool类封装成包,然后在Main中使用带包类:
下面是JAVA继承的一个例子
C++支持多继承,而JAVA只能单继承,但可多层继承
class Main{
public static void main(String[] args){
Teacher t = new Teacher("苍井空",20,'女',"2018-8-7","高级老师","生物","二班");
t.eat();
t.sleep();
t.teach();
Student s = new Student("东东",18,'男',"2018-8-7",2,5);
s.eat();
s.sleep();
s.learn();
}
}
class Person{
public String name;
private int age;
private char gender;
private String birthday;
public Person(){}
public Person(String name,int age,char gender,String birthday){
this.name = name;
this.age = age;
this.gender = gender;
this.birthday = birthday;
}
public void eat(){
System.out.println("先交钱");
System.out.println(name+"在吃饭");
}
public void sleep(){
System.out.println(name+"在睡觉");
}
public String getBirthday(){
return birthday;
}
public void setBirthday(String birthday){
this.birthday = birthday;
}
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;
}
public char getGender(){
return gender;
}
public void setGender(char gender){
this.gender = gender;
}
}
//继承
class Teacher extends Person{
//private String name;
private String title;
private String course;
private String className;
public Teacher(){}//当我们没有显式调用父类里面的构造方法的时候,默认会调用父类里面的无参构造方法,对父类里面的属性进行初始化
public Teacher(String title,String course,String className){
init(title,course,className);
}
public Teacher(String name,int age,char gender,String birthday,String title,String course,String className){
//super();//调用父类里面的无参构造方法
super(name,age,gender,birthday);
//name 1,参数 2,当前类里面的name 3,父类里面的name
//通过this访问当前类里面的成员 通过super访问父类里面的成员
init(title,course,className);
// this(title,course,className);
}
private void init(String title,String course,String className){
this.title = title;
this.course = course;
this.className = className;
}
//这个方法重写了父类里面的eat方法
public void eat(){
System.out.println("先出示自己的教师证");
System.out.println(getName()+"在吃饭");
}
public void show(){
System.out.println(this.name + "-" + super.name);
}
public void test1(){
this.name = "test1";
}
public void test2(){
super.name = "test2";
}
public void teach(){
System.out.println( getName() +"在教课");
}
public String getTitle(){
return title;
}
public void setTitle(String title){
this.title = title;
}
public String getCourse(){
return course;
}
public void setCourse(String course){
this.course = course;
}
public String getClassName(){
return className;
}
public void setClassName(String className){
this.className = className;
}
}
class Student extends Person{
private int classNumber;
private int rankNumber;
public Student(){}
public Student(String name,int age,char gender,String birthday,int classNumber,int rankNumber){
super(name,age,gender,birthday);
this.classNumber = classNumber;
this.rankNumber = rankNumber;
}
public void eat(){
System.out.println("使用手机付款");
System.out.println(getName()+"在吃饭");
}
public void learn(){
System.out.println(getName()+"在上课学习");
}
public int getClassNumber(){
return classNumber;
}
public void setClassNumber(int classNumber){
this.classNumber = classNumber;
}
public int getRankNumber(){
return rankNumber;
}
public void setRankNumber(int rankNumber){
this.rankNumber = rankNumber;
}
}
以下接口与实现(interface implements) 和类继承(extends) 的2个实例:
class InterfaceDemo2{
public static void main(String[] args){
Teacher teacher = new Teacher();
teacher.cook();
teacher.zhaoSheng();
}
}
class Person{
private String name;
private int age;
}
interface Chef{
void cook();
}
interface ZhaoSheng{
void zhaoSheng();
}
class Teacher extends Person implements Chef,ZhaoSheng{
public void teach(){
System.out.println("教学");
}
public void cook(){
System.out.println("做饭");
}
public void zhaoSheng(){
System.out.println("招生");
}
}
class Student extends Person{
public void learn(){
System.out.println("学习");
}
}
class InterfaceDemo3{
public static void main(String[] args){
Plane p = new Plane();
p.transit();
Car c = new Car();
c.transit();
c.attack();
Boat b = new Boat();
b.transit();
}
}
abstract class Vehicle{
private float velocity;
private float weight;
private String name;
private String id;
public abstract void transit();
}
interface Combat{
void attack();
}
class Plane extends Vehicle{
public void transit(){
System.out.println("通过飞起来在空中运输");
}
}
class Car extends Vehicle implements Combat{
public void transit(){
System.out.println("在陆地上运输");
}
public void attack(){
System.out.println("发射炮弹");
}
}
class Boat extends Vehicle{
public void transit(){
System.out.println("在海上运输");
}
}