初探JAVA 00 面向对象和idea的使用

方法:

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("在海上运输");
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值