一、7java面向对象编程

1.类的定义
定义类其实在定义类中的成员(成员变量和成员函数)。
class Person {
String name;
int age;
void speak(){
System.out.println(“My name is " + name);
System.out.println(“I am " + age + " years of age”);
}
}
2.创建对象,使用对象
class Car// 对这类事物进行描述Car
{
String color = “red”;
int num = 4;
void show()
{
System.out.println(“color=”+color+”…num="+num);
}
}
class CarDemo
{
public static void main(String[] args)
{
Car c = new Car();//建立对象
c.color = “black”;//对对象的属性进行修改
c.show();// 使用对象的功能。

}

}
3.Java中的构造器
(1)构造器声明在类的内部
(2)构造方法名字和类名必须一样
(3)构造方法不能有返回值
(4)构造方法可以包含参数
package com.tarena.jichu.oop;
public class Point{
int x;
int y;
public Point (int x,int y){
this.x=x;
this.y=y;
}
}
4.对象实例化的过程
package com.tarena.jichu.oop;
public class PointDemo{
Point p=new Point(3,5);
Point p2=new Point(3,5);
System.out.println(p.x+":"+p2.x);
}
5.this关键字
this是当前对象的引用,是运用期间当前对象本身。
(1)可以使用this明确的访问当前对象的属性或者方法
(2)this()可调用本类的其他构造器,可以实现构造器的重用,简化代码的实现
(3)this()必须写在构造器的第一行
public class Point{
int x;//成员变量
int y;
public Point(int x,int y){
this.x=x;
this.y=y;
}
}
6.构造方法重载
public class Point{
int x;
int y;
public Point (int x){
this (x,x);
}
public Point (int x,int y){
this.x=x;
this.y=y;
}
}
7.默认构造器
public class ConstructorDemo{
public static void main(String[] args){
Foo f=new Foo();
//Goon g=new Goo();//没有Goo();
Goo g=new Goo(2);//调用构造Goo(int)
}
}
class Foo{
//public Foo();//默认构造器
}
class Goo{
int a;
//如果定义了构造器,javac不再提供默认构造器
public Goo(int a){

}
}
8.方法重载
public class Point{
int x;
int y;
public Point(int x){
//调用本类中的构造器
this(x,x);
}
//构造器
public Point (int x,int y){
this.x=x;
this.y=y;
}
//计算当前点到原点的距离
public double distance(){
return Math.sqrt(this.xthis.x+this.ythis.y);
}
//方法重载(方法名一样,参数列表不一样)
//计算当前点到某点的距离
public double distance(int x,int y){
return Math.sqrt(this.x-xthis.x-x)+(this.y-ythis.y-y);
}
//重载方法之间经常重用
public double distance(Point other){
return Math.sqrt(distance(other.x,other.y));
}
}
9.继承
方法重写
public class Person{
String name;
int age;
String sex;
public void move(){
System.out.println(“父类中的move方法”);
}
}
class Student extends Person{
double scrore;
public void move(){
System.out.println(“子类重写以后的办法”);
}
public void test(){

}
}
10.抽象类和接口
一、抽象类
/*

  • 在class前加abstract关键字
    /
    public abstract class AbstractTest{
    public abstract void delete(int id);
    public abstract void update(int id);
    }
    class AbstractTest1 extends AbstractTest{
    public void delete(int id){
    }
    public void update(int id){
    }
    }
    注意:
    (1)抽象类不能实例化(没有方法体)
    (2)abstract修饰抽象方法,抽象方法不能有方法体
    (3)包含抽象方法的类,一定是抽象类,使用abstract修饰
    (4)抽象类不能直接实例化,使用抽象类概念可以声明引用变量
    (5)抽象概念的引用变量可以引用具体的子类实例
    (6)抽象类只能被继承,子类需要实现抽象类的抽象方法
    二、接口
    接口可以看成一种特殊的抽象类,特征如下:
    (1)接口中所有方法都是抽象方法,且必须是抽象方法
    (2)接口的所有属性都是静态常量(static final),数据成员必须初始化(不能被重新赋值)
    (3)接口没有构造方法
    (4)一个类可以同时实现多个接口,也可以不实现任何接口(类不能实现接口)
    /
  • 定义一个接口用关键字interface
  • 接口中定义抽象方法不用关键字adstract
    /
    public interface InterfaceTest{
    public void delete (int id);
    public void update(int id);
    }
    /
  • 实现一个接口用关键字implements
  • 并且要实现接口中的所有抽象方法
    */
    class InterfaceTest1 implements InterfaceTest{
    public void delete(int id){
    }
    public void update(int id){
    }
    }
发布了31 篇原创文章 · 获赞 1 · 访问量 331

猜你喜欢

转载自blog.csdn.net/qq_45844654/article/details/103398073