一、首先新建一个project,然后new一个Class——T1
package study;
public class T1
{
//overloading,overwiritting
public void print(String s)
{
System.out.println(s);
}
public void print(int i)
{
System.out.println(i);
}
}
可以看到上面的print被重写了2次,但是这是里面的参数类型不一样
接下来我们开始调用一下。
小结一下,这里解决的是参数不同,但是功能大致相同的方法怎么实现,这里要强调的java的功能是能够实现方法的重名,没有问题;
二、调用
package study;
public class TestIt
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
T1 t=new T1();
t.print("hello");
t.print(2);
//如果我要打印多个字符的话,就要写很多,print1,print2,一直到printn
//怎么解决呢?函数的重载
}
}
小结:
1.函数的重载一定是在同一个类里实现的;
2.函数的重写是父类里有同样的函数名,但是我要在子类里对其进行细化,那么我就用重写
3.构造函数的重载是构造函数名相同,但是里面参数列表不一样,这个时候就需要重载;
三、继承再说
①首先建一个父类Animal,
package study;
public class Animal
{
public void eat()
{
System.out.println("动物吃什么呢?");
}
}
②再在其下新建两个子类Dog和Cat
Dog子类
package study;
public class Dog extends Animal
{
@Override
public void eat()
{
System.out.println("dog eat child");
}
}
Cat子类
package study;
public class Cat extends Animal
{
@Override
public void eat()
{
System.out.println("Cat eat fish");
}
}
③最后新建一个继承于Animal的空类,所以
package study;
public class Person extends Animal
{
}
④开始调用进行试验
package study;
public class TestIt
{
public static void main(String[] args)
{
Animal a1=new Animal();
a1.eat();
Animal a2=new Dog();//狗也是动物
//哦,这个Animal类似于里面的数据类型,后面的为赋值其实为空值;
a2.eat();//其实和Dog a2=new Dog()是一样的;
Cat a3=new Cat();
a3.eat();
//顿悟了,我的天,写代码瞬间快了!
//由于Person里面没有定义eat,这个时候就会调用父类里面的
Animal a4=new Person();
a4.eat();
//这个例子验证了我的想法,用Animal还是用Person,都是一样的
//后面的东西用什么建的,就用的什么;
Person a5=new Person();
a5.eat();
}
}
最终结果如下:
动物吃什么呢?
dog eat child
Cat eat fish
动物吃什么呢?
动物吃什么呢?
四、数组的知识
package study;
public class TestIt
{
public static void main(String[] args)
{
Animal a[]=new Animal[4];
a[0]=new Animal();
a[1]=new Dog();
a[2]=new Cat();
a[3]=new Person();
for(int i=0;i<a.length;i++)
{
a[i].eat();
}
}
}