创建左侧和右侧的类名不同的对象

时间:2016-11-27 02:33:11

标签: java oop

我已经看到了一些实例化新对象的引用,特别是在使用继承时。

Cat cat = new Animal();

但是,我不知道这个概念叫什么。所以,我无法阅读它。

我有两个问题。

  1. 这个概念叫什么?
  2. 这怎么可能,你可以     使用与其不同的类型保持/引用对象     原班?

2 个答案:

答案 0 :(得分:0)

这里的基本概念是继承。开始阅读它的好地方是https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

你的例子正好相反 - 它应该是

Animal animal = new Cat();

这是因为Cat类是特定类型的Animal - 包含制作Animal对象所需的所有内容,以及一些额外内容。

在代码中,这看起来像是:

public class Test
{
    public static class Animal
    {
        protected String sound;
        public String getSound() { return sound; }
        public Animal() { sound = ""; }
    }

    public static class Cat extends Animal
    {
        public Cat() { sound = "meow"; }
    }

    public static void main(String[] args) {
        Animal animal = new Cat();
        System.out.println(animal.getSound());
    }
}

结果将是

  

因为Cat对象具有来自父Animal的getSound()方法,但是使用自己的构造函数创建并适当地设置数据。

答案 1 :(得分:0)

  1. 在面向对象编程领域,这个概念被称为继承。
  2. 可以将子对象分配给父母的参考。呃,太技术了,嗯?所以采取这种方式,private void JadwalIsi_Load(object sender, EventArgs e) { TampilSelectCheckBox(); } private void TampilSelectCheckBox() { DataGridViewCheckBoxColumn cb = new DataGridViewCheckBoxColumn(); cb.HeaderText = "Select"; cb.FalseValue = "0"; cb.TrueValue = "1"; cb.Name = "checkBoxColumn"; cb.Width = 40; JadwalisiGV.Columns.Insert(0, cb); JadwalisiGV.AllowUserToAddRows = false; } private void DeleteSelectedDataBtn_Click(object sender, EventArgs e) { List<DataGridViewRow> selectedRows = (from row in JadwalisiGV.Rows.Cast<DataGridViewRow>() where Convert.ToBoolean(row.Cells["checkBoxColumn"].Value) == true //error here "String was not recognized as a valid Boolean" select row).ToList(); foreach (DataGridViewRow row in selectedRows) { OleDbConnection kon = new OleDbConnection(konekpengisian); OleDbCommand command = kon.CreateCommand(); command.CommandText = "DELETE FROM [Schedule$] WHERE [WSID] = '" + row.Cells[2].Value.ToString() + "'"; kon.Open(); command.ExecuteNonQuery(); kon.Close(); MessageBox.Show("Data berhasil dihapus dari Jadwal Pengisian"); } TampilJadwal(); } 是一种Cat,但反过来不一定是真的。 因此,Animal可以是AnimalCat或其他什么,因为猫和狗确实具有动物的属性。这也称为泛化和专业化。 Dog是一个广义类别,但AnimalCat的专门类别。
  3. 互联网上有很多资源可供使用。看一看并了解面向对象编程范例。祝你好运!